1.3.1 从资源中装入GDI位图
使用位图的最简单的方法就是从资源中直接获取位图。以chap1_2工程文件为例,如果我们看一下Workspace窗口里的ResourceView,就会发现一个工程位图资源列表。其中IDB_building是一个位图资源的ID,打开IDB_building位图资源的属性对话框,可以看到其对应的位图文件位于工程文件res目录下的building.bmp,它是一个湖边楼阁的照片,因资源位图不支持24位真彩色,因此该图像应该是256色的索引位图。
|
| 图1-11 位图资源IDB_building的属性对话框 |
CBitmap类中的LoadBitmap() 函数成员能够将基于资源的DIB转换成GDI位图。用如下简单的OnDraw()函数就可以显示building图像了。
void CChap1_2View::OnDraw(CDC* pDC) { //CBitmap对象 CBitmap bitmap;
//设备环境类对象 CDC dcMemory;
//加载资源位图 bitmap.LoadBitmap(IDB_building);
//创建内存设备环境 dcMemory.CreateCompatibleDC(pDC);
//把位图选进内存设备环境,并保存旧的GDI位图对象 CBitmap *oldbitmap=dcMemory.SelectObject(&bitmap);
//显示 pDC->BitBlt(0,0,400,300, &dcMemory,0,0,SRCCOPY);
//释放bitmap,恢复原GDI位图 dcMemory.SelectObject(oldbitmap); }
|
程序中BitBlt()函数将building的像素从内存显示环境复制到显示器(或打印机)设备环境中。building位图的尺寸是300400,在显示器上,它占据了逻辑单位为300400的一个矩形区域,并且该区域的左上角位于Windows客户区域的(0,0)点处。下面是BitBlt()函数的原型。
Bool BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop);
其中:
x和y表示绘制区域的左上角坐标,跟显示映射模式有关。
nWidth表示绘制区域的宽度。
nHeight表示绘制区域的高度。
pSrcDC表示要复制位图所在的CDC对象指针。
xSrc和ySrc表示原位图要绘制区域的左上角坐标(逻辑单位)。
dwRop表示绘制方式,此处有多个选项,读者可以查阅相关书籍或MSDN,此处不赘述。
chap1_2的运行结果如图1-12所示。
|
| 图1-12 运行结果 |
【责任编辑:
夏书 TEL:(010)68476606】