一、位图简介
位图是MFC中的添加在程序中的图片,后缀名为.bmp。程序开发时,一般将位图放在程序的res文件下方便查找。
向工程中添加位图文件一般先在资源视图中BitMap文件夹中加载位图。
加载完成后可以从工具箱中添加一个加一个Picture Control控件,在图片控件的属性页中有一个Type属性,Type属性下拉列表中有8种类型,下面分别介绍下:
Frame:显示一个无填充的矩形框,边框颜色可以通过Color属性的下拉列表设定
Etched Horz:显示一条横分割线
Etched Vert:显示一条竖分割线
Rectangle:显示一个填充的矩形框,矩形颜色可通过Color属性的下拉列表设定
Icon:显示一个图标(Icon),图标通过Image 下拉列表来设置图标资源ID
Bitmap:显示一个位图(Bitmap),位图通过Image 下拉列表来设置位图资源ID
Enhanced Metafile:显示一个加强的元数据文件(Metafile)
Owner Draw:自绘
因为我们要加载的是位图图片,所以Type属性选择Bitmap。
二、位图加载
位图加载有静态和动态两种方式,静态加载时在程序设计时直接添加一个位图文件在程序中。方式如下:
图片控件的Image属性的下拉列表中选择3)中导入的位图IDB_BITMAP1。即可。
首先,跟静态位图加载相同添加一个Picture Control控件。将Type属性设为BitMAp。
然后,给控件添加一个CStatic类型的变量。
接着,添加一个按钮控件来触发加载位图的消息。
最后,在按钮消息响应函数中添加位图加载代码。代码如下:
- 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
程序背景图片的添加需要响应WM_ERASEBKGUD 消息处理函数,在响应函数中添加如下代码:
- CBitmap bitmap;
- bitmap.LoadBitmapA(IDB_BITMAP1);
- BITMAP bmp;
- bitmap.GetBitmap(&bmp);
- CDC dccompatible;
- dccompatible.CreateCompatibleDC(pDC);
- dccompatible.SelectObject(&bitmap);
- CRect rect;
- GetClientRect(&rect);
- pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dccompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
- return true;
- //return CView::OnEraseBkgnd(pDC);
- return CView::OnEraseBkgnd(pDC);
-