首页 > 其他分享 >GDI-GetBitmapBits获取兼容位图的数据

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

时间:2023-05-18 21:45:20浏览次数:40  
标签:bm DIB 兼容 DDB 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  指向用于接收位图位的缓冲区的指针。 这些位存储为字节值的数组
    返回值:如果函数成功,则返回值是复制到缓冲区的字节数
            如果函数失败,则返回值为零
    
    */

 

 

 

 

 

标签:bm,DIB,兼容,DDB,GDI,位图,GetBitmapBits,设备
From: https://www.cnblogs.com/liming19680104/p/17413378.html

相关文章