(数字图像处理)打开显示图片,以及图像处理,保存。(一)

VS2010 C++创建 MFC 基于对话框的应用程序、打开显示图片以及在此过程中遇到的一些问题和解决方法

一、基于MFC对话框创建步骤
1.新建一个MFC工程

在这里插入图片描述

2.根据自己需要修改名称和位置,点击确定在这里插入图片描述

3.选择基于对话框,点击下一步在这里插入图片描述
4.这里默认,点击下一步在这里插入图片描述
5.这里也是默认的配置在这里插入图片描述
6.这里选择APP类型,点击完成。在这里插入图片描述
7.就会生成项目工程,可以把自动生成的一些控件删掉。在这里插入图片描述
8.然后找到右边工具箱,添加两个picture控件和一个按钮控件
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
9.分别更改3个控件ID(右键点击属性即可更改)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
10.更改配置属性
属性/配置属性/常规/使用unicode字符集/使用多字节字符集
在这里插入图片描述
在这里插入图片描述

二、添加变量

1.点击picture control 框,右键为两个picture控件添加control变量,类型为CStatic,变量名分别为M_PICTURE1和M_PICTURE2.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.点击对话框,右键添加变量保存图片路径和名称变量,CString类型,变量名strFilePath,strFileName。
在这里插入图片描述
同理另外一个也是这样,添加完之后点击完成。

3.右键查看类向导,就可以看到添加的变量。
在这里插入图片描述
三、代码
1.双击button(打开)控件,此时就会跳转到程序页面。
在这里插入图片描述
2.参考代码如下:
在这里插入图片描述
为按钮添加打开文件的功能,并默认打开.png格式的文件,并在打开文件右下角添加文件类型选项,并将打开的图片显示在picture控件上。

	CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*|"), this);
    fileDlg.DoModal();
	strFilePath=fileDlg.GetPathName();		//文件路径
	strFileName = fileDlg.GetFileName();	//文件名
	if (strFilePath == _T(""))
    {
    
    
        return;
    }
    
	CImage image;
    image.Load(strFilePath);
CRect rectControl;                        //控件矩形对象
	m_picture1.GetClientRect(rectControl);
	CDC *pDc = m_picture1.GetDC();			 //设备上下文对象的类
	rectControl = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(), (int)rectControl.Height()));
	m_picture1.SetBitmap(NULL);				//清空picture
	image.Draw(pDc->m_hDC, rectControl);    //将图片绘制到Picture控件表示的矩形区域
	image.Destroy();
	m_picture1.ReleaseDC(pDc);

四.运行就会生产对话框如下在这里插入图片描述
点击打开,就能选择想要打开的图片
在这里插入图片描述
五、过程中遇到的一些问题,以及解决方法
1.运行时,显示“VS转换到 COFF 期间失败 文件无效或损坏”。
解决方法:
找到C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\文件夹里的cvtres.exe文件删掉最老版本的就行。
2运行时,提示"不支持尝试执行的操作",可能是删除了某些控件,但是对应的控件变量没有删除掉,或者宏重定义。
在这里插入图片描述

解决办法:
在控件关联函数 中查找并删除对应的控件变量,或者看自己有没有宏重定义。

参考文章:
胡子拉渣青啊青博主的文章《C++ MFC打开图片并进行简单算法处理》。

猜你喜欢

转载自blog.csdn.net/weixin_56565733/article/details/115238562