Windows程序设计:位图的显示

来源:互联网 发布:死神漫画单行本淘宝 编辑:程序博客网 时间:2024/05/22 05:13

在WIN32中,将位图显示在窗口上的步骤有一些复杂

它不是将位图像线条一样直接画在窗口上的,而是通过内存句柄调用显示在窗口上的

如果要在窗体上显示位图,首先要把位图调入资源视图中



加载位图资源:将资源视图中的位图加载进来

static HBITMAP hBitMap;  //位图句柄static BITMAP BitMap;    //位图结构体


其中位图结构体定义如下:

typedef struct tagBITMAP  {    LONG        bmType;  //位图类型    LONG        bmWidth; //位图宽度    LONG        bmHeight;  //位图高度    LONG        bmWidthBytes;  //宽度所占字节    WORD        bmPlanes;    WORD        bmBitsPixel; //像素    LPVOID      bmBits;  } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;

加载位图:在窗口创建的时候进行加载

case WM_CREATE:{hBitMap = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_FUTURE));  //得到位图句柄GetObject(hBitMap, sizeof(BITMAP), &BitMap);  //将位图句柄传给位图结构体//获取位图的宽度和高度cxBitMap = BitMap.bmWidth;cyBitMap = BitMap.bmHeight;}break;


创建内存环境设备:

位图和窗口一样,专门需要一个句柄,用来存放位图,称为位图内存DC

HDC hdcMem;   //位图的内存DC

将位图选入内存DC,用于在窗体上绘制

SelectObject(hdcMem, hBitMap);    //将位图选入内存DC

使用BitBlt()函数进行绘制

//把内存DC中的位图拷贝到窗口DC中显示BitBlt(hdc, 200, 200, cxBitMap, cyBitMap, hdcMem,0,0,SRCCOPY);  //用拷贝的方式执行
参数说明:hdc是窗口句柄

200,200表示绘制的窗口起始坐标(就是从窗口的哪里开始绘制)

cxBitMap和cyBitMap为位图的大小,

0,0表示位图上的一个坐标,程序将从该坐标开始进行绘制

SRCCOPY表示用拷贝的方式执行操作


效果:








原创粉丝点击