用C++几十行代码实现简单的图像处理系统(MFC)

用C++几十行代码实现简单的图像处理系统VS2022(MFC)

简单实现图片上传、预览、保存。效果如下:

用C++几十行代码实现简单的图像处理系统(MFC)_第1张图片
接下来使用VS2022进行编写,首先新建MFC应用
用C++几十行代码实现简单的图像处理系统(MFC)_第2张图片
选项选择“基于对话框”
用C++几十行代码实现简单的图像处理系统(MFC)_第3张图片
在工具栏添加两个按钮和一个图像框:
用C++几十行代码实现简单的图像处理系统(MFC)_第4张图片
右键添加的按钮,选择属性修改以下,id处两个按钮不要相同
用C++几十行代码实现简单的图像处理系统(MFC)_第5张图片
用C++几十行代码实现简单的图像处理系统(MFC)_第6张图片
同样的方法,修改图片控件的id,然后右键点击图片控件,添加一个CStatic类型的变量
用C++几十行代码实现简单的图像处理系统(MFC)_第7张图片
打开头文件,在类的声明里加上名字和路径变量
用C++几十行代码实现简单的图像处理系统(MFC)_第8张图片
接着实现点击“打开图片”按钮的功能

void C图片管理Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*|"), this);
	fileDlg.DoModal();
	path = fileDlg.GetPathName();		//文件路径
	name = fileDlg.GetFileName();	//文件名
	if (path == _T("")) 		return;
	CImage image;
	image.Load(path);

	CRect rectControl;                        //控件矩形对象
	m_picture.GetClientRect(rectControl);//获取窗口客户区的坐标
	CDC* pDc = m_picture.GetDC();			 //设备上下文对象的类
	rectControl = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(),
		(int)rectControl.Height()));

	m_picture.SetBitmap(NULL);				//清空picture
	image.Draw(pDc->m_hDC, rectControl);    //将图片绘制到Picture控件表示的矩形区域
	m_picture.ReleaseDC(pDc);
}

实现“保存图片”功能

void C图片管理Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	CImage image;
	image.Load(path);
	CFileDialog fileDlg(
		FALSE,
		_T("png"),
		NULL,
		0,
		_T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*|"),
		this);

	fileDlg.DoModal();
	path = fileDlg.GetPathName();		//文件保存路径
	if (path == _T(""))
	{
		return;
	}

	m_picture.SetBitmap(NULL);
	image.Save(_T(path));//将图片保存到指定路径
	image.Destroy();
}

如果报错“未识别的标识符xxx”,需要在项目做以下设置
用C++几十行代码实现简单的图像处理系统(MFC)_第9张图片

你可能感兴趣的:(mfc,c++,windows)