简单实现图片上传、预览、保存。效果如下:
接下来使用VS2022进行编写,首先新建MFC应用
选项选择“基于对话框”
在工具栏添加两个按钮和一个图像框:
右键添加的按钮,选择属性修改以下,id处两个按钮不要相同
同样的方法,修改图片控件的id,然后右键点击图片控件,添加一个CStatic类型的变量
打开头文件,在类的声明里加上名字和路径变量
接着实现点击“打开图片”按钮的功能
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”,需要在项目做以下设置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)