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

相关推荐
我是李武涯6 小时前
从`std::mutex`到`std::lock_guard`与`std::unique_lock`的演进之路
开发语言·c++
卡提西亚7 小时前
C++笔记-10-循环语句
c++·笔记·算法
亮剑20188 小时前
第1节:C语言初体验——环境、结构与基本数据类型
c++
William_wL_8 小时前
【C++】类和对象(下)
c++
William_wL_9 小时前
【C++】内存管理
c++
星星火柴9369 小时前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习
悲伤小伞10 小时前
Linux_Socket_UDP
linux·服务器·网络·c++·网络协议·udp
八个程序员10 小时前
自定义函数(C++)
开发语言·c++·算法
微露清风11 小时前
系统性学习C++-第十讲-stack 和 quene
java·c++·学习