GDI-GetBitmapBits获取兼容位图的数据

设备独立位图和兼容位图:

设备独立位图(Device-Independent Bitmap,简称DIB)和兼容位图(Compatible Bitmap,简称DDB)是两种不同的位图类型。

DIB是一种独立于设备的位图格式,它的像素格式与设备无关,可以在不同分辨率和颜色深度的设备上显示。DIB可以通过使用位图信息头和像素数组来存储图像数据,因此它具有较高的灵活性和可移植性。DIB通常用于打印机和屏幕显示等需要在不同设备上显示的场合。

DDB是一种与设备相关的位图格式,它的像素格式与设备有关,只能在特定的设备上显示。DDB通常用于在特定的设备上绘制图形,如窗口、按钮等控件。

因此,DIB和DDB的主要区别在于它们的像素格式是否与设备有关。如果需要在不同设备上显示图像,应该使用DIB;如果需要在特定设备上绘制图形,应该使用DDB

 

 

复制代码
    BITMAP bm;
    HBITMAP hbmp = (HBITMAP)::LoadImage(NULL, _T("D:\\bb\\tu\\1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_CREATEDIBSECTION);//从文件中获取位图
    ::GetObject(hbmp, sizeof(BITMAP), (PSTR)&bm);//获取对象信息
    BYTE* pbyte = new BYTE[bm.bmWidth * bm.bmHeight * 4];

    LONG l= GetBitmapBits(hbmp, bm.bmWidth* bm.bmHeight*4, pbyte);//获取兼容位图的数据
    /*
    参数1:HBITMAP hbit  位图句柄
    参数2:LONG    cb    要从位图复制到缓冲区中的字节数
            字节数=位图宽*位图高*4  (4表示4通道ARGB)
    参数3:LPVOID  lpvBits  指向用于接收位图位的缓冲区的指针。 这些位存储为字节值的数组
    返回值:如果函数成功,则返回值是复制到缓冲区的字节数
            如果函数失败,则返回值为零
    
    */
复制代码

 

 

 

 

 

posted @   天子骄龙  阅读(169)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-05-18 CAD-斜线的绘制与标注
2019-05-18 高等数学学习目录
2019-05-18 功率计算练习
2019-05-18 功率基础题练习
2019-05-18 Mixly-指令
点击右上角即可分享
微信分享提示