載入PICTURE控制元件
MFC-----在MFC中使用Picture控制元件載入任意圖片 - Mr.Easy - 部落格園
- 新建一個基於對話方塊的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);
}