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

相关推荐
txinyu的博客7 小时前
解析muduo源码之 ThreadLocal.h
c++
橘子师兄7 小时前
C++AI大模型接入SDK—ChatSDK封装
开发语言·c++·人工智能·后端
2401_857683547 小时前
C++中的原型模式
开发语言·c++·算法
s1hiyu7 小时前
C++动态链接库开发
开发语言·c++·算法
星火开发设计7 小时前
C++ 预处理指令:#include、#define 与条件编译
java·开发语言·c++·学习·算法·知识
45288655上山打老虎8 小时前
QFileDialog
c++
WBluuue8 小时前
Codeforces 1076 Div3(ABCDEFG)
c++·算法
u0109272718 小时前
模板编译期排序算法
开发语言·c++·算法
m0_686041619 小时前
C++中的适配器模式变体
开发语言·c++·算法
恒者走天下9 小时前
cpp c++辅导星球价格调整
c++