设备独立位图和兼容位图:
设备独立位图(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 指向用于接收位图位的缓冲区的指针。 这些位存储为字节值的数组 返回值:如果函数成功,则返回值是复制到缓冲区的字节数 如果函数失败,则返回值为零 */