0%

MFC-LoadBitmap

MFC学习记录

今天在回头用Picture control这个控件的时候,发现出现一些错误,这里记录一下,不要以后踩坑了。
当我们要加载一幅位图时,我们要讲这个控件的Type属性设置为Bitmap,否则你将会一直加载不出位图,默认的只是加载一个无填充的矩形框。
下面是一些属性:

Type属性

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

并且在这里我们设置好后,如果我们要用MFC给我们的CBitmap类的话呢,可以直接使用图片的ID号,如果用LoadBitmap(Hinstance可以通过AfxGetApp()->m_hinstance获得),我们的第二个参数要通过MAKEINTRESOURCE转换,而不是文件路径,LoadImage也有个坑也需要记录一下,LR_LOADFROMFILE这个才是加载文件到内存。常用的方法:

1
2
3
4
5
CBitmap bitmap;  // CBitmap对象,用于加载位图   
HBITMAP hBmp; // 保存CBitmap加载的位图的句柄
bitmap.LoadBitmap(IDB_BITMAP1); // 将位图IDB_BITMAP1加载到bitmap
hBmp = (HBITMAP)bitmap.GetSafeHandle(); // 获取bitmap加载位图的句柄
m_jzmPicture.SetBitmap(hBmp); // 设置图片控件m_jzmPicture的位图图片为IDB_BITMAP1