MFC opencv在控件中间显示图片的真实大小

根据不同人的需求 不一样 。自己 看自己需要的代码。

UpdateData(true);
// TODO: Add your control notification handler code here
CFileDialog fd(TRUE,_T("bmp"),_T(".bmp"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"位图文件(*.bmp)|*.bmp||",this);
CString path;
if(fd.DoModal()==IDOK)
{
path=fd.GetPathName();
}
else return false;
//if(pImgEmbed.nSize!=0)cvReleaseImage(&pImgEmbed);  
IplImage * pImgEmbed = cvLoadImage((const char *)(LPCTSTR)path, CV_LOAD_IMAGE_UNCHANGED);
CDC* pDC = GetDlgItem(IDC_STATIC1) ->GetDC(); // 获得显示控件的 DC  
HDC hDC = pDC ->GetSafeHdc(); // 获取 HDC(设备句柄) 来进行绘图操作  
CRect rect;//,rect2; //
//((CStatic*)GetDlgItem(IDC_STATIC1))->GetWindowRect(&rect2);  
GetDlgItem(IDC_STATIC1) ->GetClientRect( &rect );  
int rw = rect.right - rect.left; // 求出图片控件的宽和高  
int rh = rect.bottom - rect.top;  
int iw = pImgEmbed->width; // 读取图片的宽和高  
int ih = pImgEmbed->height;  
int tx = (int)(rw - iw)/2; // 使图片的显示位置正好在控件的正中  
int ty = (int)(rh - ih)/2;  
SetRect( rect, tx, ty, tx+iw, ty+ih );  
//if(TraceFlag==FALSE) DrawFrame(pImgEmbed,TraceLocation);  
CvvImage cimg;
cimg.CopyOf(pImgEmbed); // 复制图片  
cimg.DrawToHDC( hDC, &rect ); // 将图片绘制到显示控件的指定区域内  
cvWaitKey(50);  
ReleaseDC( pDC );  

//cvShowImage("水印图像", pImgEmbed);
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
UpdateData(FALSE);
return TRUE;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值