加载PICTURE控件

MFC-----在MFC中使用Picture控件加载任意图片 - Mr.Easy - 博客园

  1. 新建一个基于对话框的MFC程序(姑且命名为myImage),并添加一个Picture控件到对话框中,修改ID号为:IDC_STATIC_PIC。为使Picture控件更美观,可将其属性设置为:Client Edge:True。

2. 添加按钮,可命名为“加载图像”,修改ID号为ID_BUTTON_IMG。双击按钮,跳到myImageDlg.cpp文件,开始编辑按钮消息响应函数。该按钮功能为加载图片并显示到Picture控件上。

void CmyPointerRecognitionDlg::OnBnClickedButtonDetect()

{
   // TODO: Add your control notification handler code here

CString m_strPicPath;

IplImage* TheImage;

CFileDialog dlg(true,_T(".bmp"),NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,
          _T("image file(
.bmp;.jpg)|.bmp;.jpg|All Files(.)|.*|"),NULL);  //弹出选择图片对话框
  dlg.m_ofn.lpstrTitle=_T(“open Image”);
  if(dlg.DoModal()!=IDOK)
    return ;
  m_strPicPath = dlg.GetPathName();
  m_strPicPath.Replace(_T("//"),_T("////"));
  TheImage=cvLoadImage((CT2CA)m_strPicPath,1);
  if(TheImage!=NULL)
   {
    ShowImage(TheImage, IDC_STATIC_PIC);
  }

}

3. 注意在myImage.cpp和myImage.h中添加头文件:#include<cv.h>和#include<highgui.h> 为方便编程最好加上:using namespace cv;

4. 在解决方案的类视图(Class View)中右键单击CmyImageDlg类,选择“添加”->“添加成员函数”,在弹出的对话框中输入相应内容 函数类型:void,函数名:ShowImage ,成员变量:IplImage* img 和 UINT ID。点击“完成”,开始编辑函数体:

void CmyImageDlg::ShowImage(IplImage* img, UINT ID)
  {

CDC* pDC=GetDlgItem(ID)->GetDC();
  HDC hDC=pDC->GetSafeHdc();
  CRect rect;
  GetDlgItem(ID)->GetClientRect(&rect);
  SetRect(rect,rect.left,rect.top,rect.right,rect.bottom);
  CvvImage cimg;
  cimg.CopyOf(img);
  cimg.DrawToHDC(hDC,&rect);
  ReleaseDC(pDC);

}

mfc使用opencv时CImage(CvvImage)取消以后的替代方法及error C2039: “DrawToHDC”: 不是“ATL::CImage”的成员 - vsooda的专栏 - CSDN博客

猜你喜欢

转载自blog.csdn.net/qq_40584593/article/details/85140885
今日推荐