win32开发(绘制bitmap)

来源:互联网 发布:js valueof 比较大小 编辑:程序博客网 时间:2024/06/05 02:16

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    win32平台支持直接绘制bitmap图片,所以同学们可以从网上直接找一张图片来绘制。一般来说,绘制图像分成这几个步骤:1、创建兼容上下文设备,2、根据文件直接创建bitmap句柄,3、句柄绑定,4、使用BitBlt绘图,5、删除bitmap句柄和兼容上下文设备,

CreateCompatibleDCLoadImageSelectObjectBitBltDeleteObjectDeleteDC
    看上去有点复杂,我们可以弄一点真实的代码来说明,

case WM_PAINT:HDC hdcmem; HBITMAP hbmp;BITMAP bmp;hdc = BeginPaint(hWnd, &ps);hdcmem = CreateCompatibleDC(hdc);hbmp = (HBITMAP)LoadImage(NULL, "setup.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); GetObject(hbmp, sizeof(bmp), &bmp);SelectObject(hdcmem, hbmp);BitBlt(hdc, 0, 0, bmp.bmWidth, bmp.bmHeight, hdcmem, 0, 0, SRCCOPY);DeleteObject(hbmp);DeleteDC(hdcmem);EndPaint(hWnd, &ps);break;
    这里的图片是用LoadImage获取的,如果是系统的位图,可以直接用LoadBitmap获取。同时注意,这里bmp的信息是通过GetObject获得的,它主要是在BitBlt的时候使用到的。如果大家需要绘制其他的图片,只需要把这里的文件换成自己本地的bitmap文件就可以了。那么,如果想自己直接创建bitmap像素进行贴图,应该怎么用呢?也不复杂,

CreateBitmapSetDIBitsCreateCompatibleDCSelectObjectBitBltDeleteDC
    具体实现,这里就不贴出代码了。大家可以参考这个地址的代码, 地址在这。但是,我们可以用msdn的方法,把这些函数的意义弄明白,一步一步去做就可以了。另外,还有一个稍微复杂一点,但是我觉得很有意义的案例就是msdn提供的一个截屏代码的范例,地址在这。我个人觉得,这个代码非常有意义,如果大家可以真正把这份代码看明白了,使用win32贴图这个基本功能也就真正掌握了。


原创粉丝点击