无法使用可调整大小的格式在图片控件MFC中加载图像

时间:2015-03-26 16:29:24

标签: opencv visual-c++ mfc

我对MFC的图像控制中的加载图像有一个有趣的问题。我有一个可以调整大小的表单。我是使用Mark Ransom的方法完成的。我在CResizableDialog.cpp中编写了该方法。要使用它,在我的课上我使用

class CFace_Recognition_MFCDlg : public CResizableDialog

我的表单有一个图片控件表单IDC_IMG

CStatic pic1;
void CFace_Recognition_MFCDlg::DoDataExchange(CDataExchange* pDX)
{
    CResizableDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_IMG, pic1);
}

最后,我使用opencv读取图像并将其转换为bmp。然后通过代码

将其显示到图片控件中
IplImage *img;
IplImage *resize;

img=cvLoadImage("phongcanh.jpg",CV_INTER_LINEAR);
if(img==0){
    exit(0);
}
resize = cvCreateImage(cvSize(400,300),img->depth, img->nChannels); 
cvResize(img, resize, 1);           
pic1.SetBitmap(IplImage2DIB(resize));  
cvReleaseImage(&img);  

IplImage2DIB功能运行良好。但我无法将图像显示到图片控件中。我检查并发现函数中的问题

CResizableDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_IMG, pic1);

但我不知道如何编辑它。因为我正在使用resizeable form。你能帮我解决一下吗?感谢

1 个答案:

答案 0 :(得分:0)

CResizableDialog是可调整大小的布局的有限框架。我猜:在创建对话框之后,它根本不包括CStatic中图像的大小调整。只需查看ResizableLib源代码即可。

如果是这种情况,请使CStatic不可见(同时仍保留可调整大小的锚点)并使用其在OnDraw()OnEraseBkgnd()中的位置自行绘制图像。