我对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。你能帮我解决一下吗?感谢
答案 0 :(得分:0)
CResizableDialog
是可调整大小的布局的有限框架。我猜:在创建对话框之后,它根本不包括CStatic
中图像的大小调整。只需查看ResizableLib源代码即可。
如果是这种情况,请使CStatic
不可见(同时仍保留可调整大小的锚点)并使用其在OnDraw()
或OnEraseBkgnd()
中的位置自行绘制图像。