什么是GetBitmapBits

核心提示复制附加位图的位模式向指定的缓冲区。外文名GetBitmapBits功能将指定位图的位拷贝到缓冲区里原型LONG GetBitmapBits类别计算机函数GetBitmapBits函数功能该函数将指定位图的位拷贝到缓冲区里。函数原型:LON

最佳答案:

复制附加位图的位模式向指定的缓冲区。

详情介绍

复制附加位图的位模式向指定的缓冲区。

外文名
GetBitmapBits
功能
将指定位图的位拷贝到缓冲区里
原型
LONG GetBitmapBits
类别
计算机函数

GetBitmapBits函数功能

该函数将指定位图的位拷贝到缓冲区里。

函数原型:LONG GetBitmapBits(HBITMAP hbmp, LONG cbBuffer, LPVOID lpvBits);

GetBitmapBits参数

hbmp:指向感兴趣的位图的句柄。

cbBuffer:指定要从位图拷贝到缓冲区的字节数。

lpvBits:指向接收位图位数据的缓冲区指针。这些位是按字节类型存储在数组中的。

返回值:如果该函数执行成功,那么返回值就是拷贝到缓冲区的字节数;如果该函数执行失败,那么返回值为0。

Windows NT:若想获得更多错误信息,请调用GetLastError函数。

请注意,我发现在WIN7系统上,这个函数返回的copy字节数并不总是等于bitmap.bmHeight * bitmap.bmWidthBytes 。

BITMAP bitmap;

GetObject(hBitmap, sizeof(BITMAP), &bitmap);

DWORD dwSize = bitmap.bmHeight * bitmap.bmWidthBytes;

unsigned char* pBits = new unsigned char;

LONG dl = GetBitmapBits(hBitmap, dwSize, pBits);

调试以上的代码,如果是大小为122X122,24位bmp图片, bitmap.bmWidthBytes = 368,

这里是因为位图中像素的位元是以行为单位对齐存储的,每一行的大小都向上取整为 4 字节(32位 DWORD)的倍数。

24位bmp图片,宽度122,所以每一行存储122*3=366,但是366不能被4整除,所以向上取整4倍数,即为368。

 
友情链接
鄂ICP备19019357号-22