複製附加點陣圖的位模式向指定的緩衝區。
基本介紹
- 外文名:GetBitmapBits
- 功能:將指定點陣圖的位拷貝到緩衝區里
- 原型:LONG GetBitmapBits
- 類別:計算機函式
函式功能,參數,
函式功能
該函式將指定點陣圖的位拷貝到緩衝區里。
函式原型:LONG GetBitmapBits(HBITMAP hbmp, LONG cbBuffer, LPVOID lpvBits);
參數
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[dwSize];
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。