【MFC开发(12)】图片框控件 Picture Control

1.显示一个BMP图片到窗口上

开始你得有一个BMP图片的资源,找到图片之后导入到项目资源中

 

首先需要新建一个图片控件,直接拖拽到想放置的位置即可

然后在Picture控件的Type属性下拉框中选择Bitmap;


在Picture控件的Image属性下拉框中选择BMP资源ID为IDC_BITMAP1即可。

 


Type属性下拉列表中有8种类型,下面分别介绍下:
Frame:显示一个无填充的矩形框,边框颜色可以通过Color属性的下拉列表设定
Etched Horz:显示一条横分割线
Etched Vert:显示一条竖分割线
Rectangle:显示一个填充的矩形框,矩形颜色可通过Color属性的下拉列表设定
Icon:显示一个图标(Icon),图标通过Image下拉列表来设置图标资源ID
Bitmap:显示一个位图(Bitmap),位图通过Image下拉列表来设置位图资源ID
Enhanced Metafile:显示一个加强的元数据文件(Metafile)
Owner Draw:自绘

2.如何动态的去加载一个BMP图片呢

这里添加一个按钮,通过点击来显示出图片

这个给picture控件添加一个变量m_picture,添加一个按钮来控制显示bmp图片资源

void CMFC_Test1Dlg::OnBnClickedButton15()
{
	// TODO:  在此添加控件通知处理程序代码
	//新建一个bmp文件资源变量
	CBitmap m_bmp;
	//加载资源对应的ID
	BOOL b_load = m_bmp.LoadBitmap(IDB_BITMAP2);
	//如果加载成功则进行显示
	if (b_load){
		m_picture.SetBitmap((HBITMAP)m_bmp);
	}
	//m_picture

}

也可以通过加载文件的方式来显示bmp图片

//方式二,通过图片的路径来进行加载显示
	//加载的图片在当前EXE的模块外
	//可以指定图片大小,如上图中的50, 50,若实际大小和此不相符,会自动缩放图片
	//LR_DEFAULTCOLOR — 指定按照原图的颜色加载图片,不可少
	//LR_LOADFROMFILE — 加载外部的Bitmap,一定要指定
	//LR_CREATEDIBSECTION — 一般会指定
	//如若按照图片本身的大小加载,则设置cx, cy为0, 0,并且在最后的标志位加上 | LR_DEFAULTSIZE
	//注意:从网上下载的Bitmap图片可能用上面的方法加载失败,返回的HBITMAP为NULL,
	//GetLastError()返回0,这个一般是图片格式的问题,可以用Windows的画图程序打开Bitmap再另存为24位位图的bmp格式就可以了。
	HBITMAP hbmp = (HBITMAP)::LoadImage(NULL, _T("F:\\VSproject\\MFC_project\\0428test\\MFC_Test1\\MFC_Test1\\res\\IDC_520.bmp"), IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR|LR_DEFAULTSIZE|LR_LOADFROMFILE);
	m_picture.SetBitmap(hbmp);

效果如下图所示

3.如何加载其他类型的图片呢?比如png、jpg等等格式

默认情况下,Picture控件只能显示BMP类型的图像,因为BMP文件格式是微软自家的。但是bmp

这个确实不是很常用,或者说针对 png、jpg、gif 等文件类型来说 bmp 不常用。那么Picture控件

如何来显示我们常用的 png、jpg 等图像格式呢?这里要借助微软的ATL中的一个类:CImage

代码如下所示:

void CMFC_Test1Dlg::OnBnClickedButton17()
{
	// TODO:  在此添加控件通知处理程序代码
	CImage cim;
	cim.Load(_T("F:\\VSproject\\MFC_project\\0428test\\MFC_Test1\\MFC_Test1\\res\\image.jpg"));
	HBITMAP hbmp = cim.Detach();
	m_picture2.SetBitmap(hbmp);
	m_picture2.SetWindowPos(NULL, 0, 0, 192, 78, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER);
}

还有需要注意的是每次编辑,图片控件都会报错如下所示

解决方法:

双击这个错误,会跳到提示错误的那一行,在那一行中的一串地址前插入:"Static", SS_BITMAP,

 

  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值