MFC下使用CvvImage在子对话框(非主对话框)中无法显示图片的解决方法
来源:互联网 发布:东华理工大学软件学院 编辑:程序博客网 时间:2024/04/28 12:03
在MFC框架下利用OPENCV进行项目开发时,我们经常会遇到要将一幅图片显示在对话框中,通常我们利用MFC的Picture Control控件作为图片容器,若Picture Control控件是在主对话框中,这时比较简单,参考代码如下:
1.主窗口(主对话框):
//按下button1,图片显示void CDemoDlg::OnBnClickedButton1(){ //...................... //.....................其他代码 ShowImage();//显示图片函数}
其中,ShowImage()代码如下:
void CDemoDlg::ShowImage(){// ID 是Picture Control控件的ID号CDC* pDC=GetDlgItem(ID)->GetDC();// 获得显示控件的 DCHDC hDC=pDC->GetSafeHdc();// 获取 HDC(设备句柄) 来进行绘图操作CRect rect;GetDlgItem(ID)->GetClientRect(&rect);CvvImage cimg;cimg.Load(m_imagePath,1); // 载入图片,m_imagePath是图片的完整路径,若是在本工程目录下,则可以直接填写图片名cimg.DrawToHDC(hDC,&rect);ReleaseDC(pDC);}
这是没问题的,图片可以加载并显示出来。
2.子窗口(或子对话框):
当我们通过资源视图,新建一个新的对话框,类名为CChildDlg,然后在主对话框中按下一个按钮,创建CChildDlg类的模态对话框:
void::CDemoDlg::OnBnClickedButton2(){CChildDlg dlg;dlg.DoMal();}并在子窗口的OnInitDialog()函数中添加ShowImage()函数,企图在CChildDlg子对话框中显示图片时。
BOOL CChildDlg::OnInitDialog(){CDialogEx::OnInitDialog();// TODO: 在此添加额外的初始化//................其他的初始化代码 ShowImage(); //我们预期目标是初始化时就将图像显示出来 return TRUE; // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE}如果仍用上面的代码,发现图片是不能显示的.
问题出在哪?
问题出在OnPaint()函数上,我们新建的窗口默认是没有重写OnPaint()函数,这也就导致无法绘制图像。解决办法如下:
通过类向导,为CChildDlg类添加WM_ONPAINT消息,其中ChildDlg::OnPaint()函数如下:
void CChildDlg::OnPaint(){CPaintDC dc(this); // device context for painting// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用 CDialogEx::OnPaint()CDialog::OnPaint(); // 重绘对话框CDialog::UpdateWindow(); // 更新windows窗口,如果无这步调用,图片显示还会出现问题ShowImage(); // 重绘图片函数}这样图片就可以在子对话框中显示了。
转载请注明作者和出处:http://blog.csdn.net/holamirai,未经允许请勿用于商业用途
1 0
- MFC下使用CvvImage在子对话框(非主对话框)中无法显示图片的解决方法
- MFC中在对话框中显示图片(从此摆脱opencv升级后无CvvImage的烦恼)
- MFC在主对话框中显示子对话框
- 在MFC对话框中显示图片的三种方法(有两种使用OpenCv)
- 使用CvvImage类,实现MFC对话框显示视频
- MFC的ActiveX控件在Web中使用DoModal()显示对话框时,为非阻塞的
- MFC 关于在对话框上的同一区域显示不同的内容(子对话框)
- 利用CvvImage类在MFC控件中显示图片
- 在VS2010里MFC对话框中使用OpenGL绘图,添加的控件不显示的一种解决方法
- opencv2在MFC对话框控件中显示图片播放视频
- 在MFC的对话框中使用定时器
- 在对话框中显示图片
- 在对话框中显示图片
- mfc+CvvImage类 显示工程目录下的图片
- MFC 父窗口中显示子对话框的作业流程
- MFC对话框显示图片
- MFC对话框显示图片
- MFC对话框显示图片
- div中的文字上下左右居中
- 厌倦了NullPointException?Optional拯救你!
- 数据结构与算法 LeetCode编程练习--counts Prime
- MySQL数据库+jsp+servlet实现分页查询
- 工厂模式(C++)
- MFC下使用CvvImage在子对话框(非主对话框)中无法显示图片的解决方法
- 使用CustomValidator进行客户端的验证
- iOS之触摸事件和手势
- 在mac中使用gitflow
- 五笔中难打的几个字
- Excel 入门简单读写
- 虚拟机linux系统能够上网但是不能ping主机
- 【图像处理】OTSU二值化原理及代码实现
- 黑马程序员——反射