MFC 对话框中的picture control 控件显示图片
MFC读取图片一般使用自定义的DIB文件。DIB文件集中了处理图片的API函数,这样可以方便我们的图像操作。
DIB文件下载路径:DIB文件下载
MFC显示图片有几种方法:
1.在运行界面上选择 文件-打开 或者 直接点击打开快捷键
条件是在xxxDoc.cpp文件中加入
BOOL Cimageskitch0Doc::OnSaveDocument(LPCTSTR lpszPathName)
{// TODO: 在此添加专用代码和/或调用基类//+*****保存DIB图像CString strPathName;strPathName.Format("%s",lpszPathName);//+*****新建文件CFile file(strPathName,CFile::modeCreate|CFile::modeWrite);if(m_dib.WriteToFile(&file) == TRUE){SetModifiedFlag(FALSE); // have savedreturn TRUE;}elsereturn FALSE;//return CDocument::OnSaveDocument(lpszPathName);
}BITMAPINFO CreateBitmapInfo(cv::Mat workImg) // 建立位图信息
{ BITMAPINFOHEADER BIH={40,1,1,1,8,0,0,0,0,0,0};BITMAPINFO bmi;int bits, colors;RGBQUAD ColorTab[256];if(CV_8UC3==workImg.type()){bits=24;}if(CV_8UC1==workImg.type()){bits=8;} if(bits>8) colors=0;elsecolors=1<<bits; BIH.biWidth =workImg.cols; BIH.biHeight =workImg.rows;BIH.biBitCount=(BYTE) bits; bmi.bmiHeader=BIH;if(bits==8) { // 256 色位图for(int i=0;i<256;i++) { // 设置灰阶调色板ColorTab[i].rgbRed=ColorTab[i].rgbGreen=ColorTab[i].rgbBlue=(BYTE)i;}memcpy(bmi.bmiColors,ColorTab, 1024); }return(bmi);
}
这样,上述操作就可以显示图片了。
第二种方法,在对话框的picture control控件显示图片。
这种方法稍微麻烦。
首先在菜单栏编辑自己的菜单,比如本项目中 “图像匹配”,在下拉菜单下编辑“图像匹配”并修改ID号 :ID_IMAGEMATCH,然后为此菜单添加事件处理程序,选择类是View类。
然后再在资源视图中Dialog下插入dialog对话框。在上面加入几个picture control 控件。底部加入几个button控件。对话框属性的Border属性选为Resizing,这样对话框的大小就可以使用鼠标调节。修改对话框的控件的ID。
效果如下图:
接着为对话框添加类:CDlgImageMatchYG
匹配的事件响应程序就可以这样写:
void CImageMatchingView::OnImagematch()
{// TODO: Add your command handler code hereCImageMatchingDoc* pDoc = GetDocument();//pDoc = GetDocument();// 判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的水平镜像,其它的可以类推)if(pDoc->m_pDibInit->m_nColorTableEntries != 256) //pDoc->m_pDibInit在pDoc中初始化{// 提示用户MessageBox("目前只支持256色位图的图象配准!", "系统提示" , MB_ICONINFORMATION | MB_OK); // 返回return;}// 打开图象识别对话框CDlgImageMatchYG* pDlg = new CDlgImageMatchYG(NULL, pDoc);pDlg->DoModal();delete pDlg;
}
在事件处理程序中调用对话框对象。
在CDlgImageMatchYG类文件中,有几个函数比较重要。
OnPaint()函数,本函数由对话框对象自动调用,刷新对话框。
CalImageLocation(),自定义的设置对话框的控件位置和大小的函数。
本项目源码下载路径:mfc显示图片源码
MFC 对话框中的picture control 控件显示图片相关推荐
- 在MFC对话框中快速集成三维控件
在MFC的对话框中可以方便的集成AnyCAD三维控件(c++版本),遵循一下几步: 1.在对话框资源中增加一个Static控件,ID为IDC_STATIC_3D,并且把它的Notify属性设置为Tru ...
- 在VC++中使用Tab Control控件
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...
- 【MFC】动态加载Picture Control控件中的图片
[MFC]动态加载Picture Control控件中的图片 前言 方法1:CBrush 方法2:SetBitmap 参考链接 方法3:重写MyPictureControl 前言 在MFC窗体中,我们 ...
- MFC中使用TAB Control控件
2019独角兽企业重金招聘Python工程师标准>>> MFC中使用TAB Control控件 MFC中使用TAB Control控件(转) 假如我现在有个SDI程序,View是Fo ...
- C++ MFC picture control控件按比例显示任意图片文件(jpg、bmp等)
前段时间做大一专业实训,用MFC做一个图片查看类程序,对于从来没有学过C++的我们来说显示一张图片就是一件很难的事情了,作为小组里唯一一个MFC设计者,我从网上有很多关于MFC图片控件显示的文章,但大 ...
- C#利用Picturebox控件显示图片
源文章:https://blog.csdn.net/liyuqian199695/article/details/54098938 C#利用Picturebox控件显示图片 1.Picturebox控 ...
- Picture Control 控件 加载图片 画线
编程中遇到问题,如何在已有图片上添加 虚线,图片使用Picture控件显示 参考网页https://bbs.csdn.net/topics/10044979 其中参考程序段如下: 这是我画线的程序: ...
- 使用CvvImage类在MFC的static控件显示图片
使用OpenCV的库,可以非常便捷地实现对图像的各种操作.在CTestDlg对话框中放置一个picture static控件,ID为IDC_STATIC,如下函数即可实现显示图片的功能.根据此方法,可 ...
- MFC怎么让图片适应picture control控件的大小
最近做项目时,遇到一个问题,想要让picture control中的图片显示与该控件的大小一致,用的环境是vs2008,添加一个控件后,更改其type为bitmap,此时的控件大小不能改变,需要将Ce ...
最新文章
- hbuilder能断点吗_知乎点赞破4万!这些PPT小秘密你知道吗?
- 纪念逝去的岁月——C/C++选择排序
- 自己挖的坑自己填--JVM报内存溢出
- PostgreSQL中Timestamp转成世纪秒(Unix时间戳)
- CV《物体识别与检测3 - 多目标识别的优化技术》
- 计算机专业学的东西其实很少,为什么计算机专业的学生要学习使用Linux系统?...
- Unity3D SceneView Camera
- python写一些小代码_#python#自己写的一段小代码
- html5 drawimage 不显示,javascript – 来自视频的HTML5 Canvas drawImage在第一次绘制时不显示...
- mysql begin_MySQL 存储过程的 BEGIN 和 END
- Spring Boot 问题记录
- 重磅!2021年国内Java培训机构排名前十最新出炉啦
- matlab uicontrol 居中,[转载]matlab的uicontrol
- python apply函数不打印_Python Pandas dataframe shift在apply函数中不起作用
- 青出于蓝而胜于蓝,这是一款脱胎于Jupyter Notebook的新型编程环境
- Pythton学习笔记1
- Docker构建harbor+IDEA,一篇文章就够了
- 【SPSS】百分位数计算方法探讨:SPSS计算差异
- 华硕笔记本拆机清尘,修理
- 软件测试压力测试例子,第一个web压力测试例子 - 稻香老农 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...