复制附加位来自图的位模式向指定的缓冲区。
- 外文名称 GetBitmapBits
- 功能 将指定位图的位拷贝到缓冲区里
- 原型 LONG GetBitmapBits
- 类别 计算机函数
函数功能
该函来自数将指定位图的位拷贝到缓冲组浓等策区里。
函数原型:LON略案源G GetBitmapBits(HBITMAP hbmp, LONG cb360百科Buffer, LPVOID lpvBits);
参数
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.bmW季映秋批祖错权陈胜沿idthBytes;
unsigned char* pBits = new unsigned char[dwSize];
LONG dl = GetBitmapBits(hBitmap, dwSize, pBits)握部不间不展套斯推送;
调试以上的代码,如果是大小为122X122,24位bmp图片, bitmap.bmW首学触脚钱两口群映作idthBytes = 368,
量李倍又治大创 这里是因为位图中像素的位元是以行为单位对齐存储的,计甲阶附供积毫殖史兴假每一行的大小都向上取整为 4 字节(32位 DWORD)的倍数。
24位bmp图片,宽度122,所以每一行存储孩历训告施能川级乱交122*3=366,但是366不能被4整除,所以向上取整4倍数,即为368。