MFC - Picture Control 控件显示图片

1 VS2015 新建一个对话框工程,如图拖入三个控件,将 Picture Control 控件,修改属性 ID 为 IDC_IMAGE ,将 Edit Control 控件,修改属性 ID 为 IDC_EDIT_FILEPATH。

2 双击 Button 按钮,函数中实现。

cpp 复制代码
//浏览
void CBase64DemoDlg::OnBnClickedButtonBrowser()
{
	// TODO: Add your control notification handler code here
	//选择图片
	CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this);
	//打开文件选择窗体 //如果点击"取消"按钮,直接退出
	if (fileDlg.DoModal() == IDCANCEL) return; 
	//获取图片路径(包含名称) //既有路径又有文件名,如D:/lena.jpg
	CString strFilePath = fileDlg.GetPathName();
	SetDlgItemText(IDC_EDIT_FILEPATH, strFilePath);
	//只获取文件名,如lena.jpg
	//CString strFileName = fileDlg.GetFileName();
	//判断路径不为空
	if (strFilePath == _T(""))
	{
		return;
	}

	//使用CImage的Load、Draw函数显示图像
	CImage image;
	image.Load(strFilePath);

	//学习下CImage的属性,无其他意义
	//int x = image.GetWidth(); 
	//int y = image.GetHeight();

	//获取控件的矩形
	CRect rectControl;  //控件矩形对象
	//Picture Control的ID为IDC_IMAGE
	CWnd  *pWnd = GetDlgItem(IDC_IMAGE); 
	pWnd->GetClientRect(&rectControl);

	//以控件为画布,在其上画图
	CDC *pDc = GetDlgItem(IDC_IMAGE)->GetDC();
	//绘图前必须调用此函数(设置缩放模式),否则失真严重
	SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE);

	//画图(以下两种方法都可) //将图片绘制到Picture控件表示的矩形区域
	image.StretchBlt(pDc->m_hDC, rectControl, SRCCOPY);
	//image.Draw(pDc->m_hDC, rectControl);                

	image.Destroy();
	pWnd->ReleaseDC(pDc);
}

3 编译运行,点击浏览按钮,找到准备好的图片,选中,运行效果。

参考:

MFC在Picture控件上显示图像、保存图像

https://www.cnblogs.com/xixixing/p/12678709.html

相关推荐
木心爱编程37 分钟前
【Qt 5.14.2 新手实战】QTC++入门筑基——10 分钟做个文本编辑器:QLineEdit + QTextEdit 核心用法
java·c++·qt
肆悟先生37 分钟前
3.15 引用类型
c++·算法
Cx330❀1 小时前
《C++ 动态规划》第001-002题:第N个泰波拉契数,三步问题
开发语言·c++·算法·动态规划
神仙别闹1 小时前
基于Qt5(C++)+SQLite 开发的一个小巧精美的本地音乐播放器
开发语言·c++·qt
cheniie1 小时前
Windows下c/c++使用pgsql
c++·windows·postgresql
Q741_1471 小时前
Linux 进程核心解析 fork()详解 多进程的创建与回收 C++
linux·c++·面试·笔试·进程
白昼流星!1 小时前
C++ 封装的经典实践:从立方体到点圆关系的面向对象思考
c++
leiming61 小时前
c++ 利用模板创建一个可以储存任意类型数据的数组类
开发语言·c++·算法
无敌最俊朗@1 小时前
音视频C++开发进阶指南
开发语言·c++·音视频
cpp_25011 小时前
P8723 [蓝桥杯 2020 省 AB3] 乘法表
数据结构·c++·算法·蓝桥杯·题解·洛谷