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

相关推荐
码农小韩3 小时前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
linweidong3 小时前
C++ 中避免悬挂引用的企业策略有哪些?
java·jvm·c++
CoderCodingNo3 小时前
【GESP】C++五级/四级练习(双指针/数学) luogu-P1147 连续自然数和
开发语言·c++·算法
Q741_1473 小时前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(2) 作答语言:C/C++ 哈夫曼编码 LRU
c语言·数据库·c++·算法·笔试·哈夫曼编码·哈夫曼树
Z1Jxxx3 小时前
日期日期日期
开发语言·c++·算法
报错小能手4 小时前
nginx集群聊天室(一) 初步讲解集群聊天室所需库的搭建
c++·nginx
mjhcsp4 小时前
C++ 后缀树(Suffix Tree):原理、实现与应用全解析
java·开发语言·c++·suffix-tree·后缀树
mjhcsp4 小时前
C++ 有限状态自动机(FSM):原理、实现与应用全解析
开发语言·c++·有限状态自动机
mjhcsp4 小时前
C++ KMP 算法:原理、实现与应用全解析
java·c++·算法·kmp
好大哥呀4 小时前
C++ IDE
开发语言·c++·ide