GetDIBits

GetDIBits函式獲取指定兼容點陣圖的位,然後將其作一個DIB—設備無關點陣圖(Device-Independent Bitmap)使用的指定格式複製到一個緩衝區中。

函式原型

int GetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines, LPVOID lpvBits, LPBITMAPINFO lpbi, UINT uUsage);

參數

cScanLines:指定檢索的掃描線數。

lpvBits:指向用來檢索點陣圖數據的緩衝區的指針。如果此參數為NULL,那么函式將把點陣圖的維數與格式傳遞給lpbi參數指向的BITMAPINFO結構。

lpbi:指向一個BITMAPINFO結構的指針,此結構確定了設備所在點陣圖的數據格式。

uUsage:指定BITMAPINFO結構的bmiColors成員的格式。它必須為下列取值:

DIB_PAL_COLORS:顏色表由指向當前邏輯調色板的16位索引值數組構成。

DIB_RGB_COLORS:顏色表由紅、綠、藍(RGB)三個直接值構成。

返回值:如果lpvBits參數非空,並且函式調用成功,那么返回值為從點陣圖複製的掃描線數。

Windows 95和Windows 98:如果lpvBits參數為NULL並且GetDIBits成功地填充了BITMAPINFO結構,那么返回值為點陣圖中總共的掃描線數。

Windows NT:如果lpvBits參數為NULL並且GetDIBits成功地填充了BITMAPINFO結構,那么返回值為非0。如果函式執行失敗,那么將返回0值。Windows NT:若想獲得更多錯誤信息,請調用GetLastError函式。

注釋:如果所需要的DIB格式與其內部格式相匹配,那么點陣圖的RGB值將被複製。如果不匹配,那么將合成一個顏色表。下表描述了針對每一種顏色格式所合成的顏色表。

1_BPP:顏色表中僅包含黑白表項。

4_BPP:顏色表由標準VGA定義的顏色組合而成。

8_BPP:顏色表由GDI定義的256色組合而成。

24_BPP:不返回顏色表。

如果lpvBits參數為一個有效指針,那么點陣圖信息頭結構的前6個成員必須初始化為DIB的大小和格式。

注意:點陣圖信息頭結構可為以下幾種格式:

作業系統點陣圖信息頭結構(Operating System Bitmap Information Header)

Windows NT 3.51及早期的BITMAPINFOHEADER

Windows NT 4.0及Windows 95中的BITMAPV4HEADER

Windows NT 5.0及Windows 98中的BITMAPV5HEADER

通過將高度設為正數來指定一個自下而上的DIB,而自上而下的DIB則通過設定一個負的高度值來指定。點陣圖的顏色表將附加在BITMAPINFO結構的後面。

如果lpvBits為NULL,那么GetDIBits將檢查lpbi所指向的第一個結構的第一個成員。這一成員必須指定BITMAPCOREHEADER結構或點陣圖信息頭結構的位元組數。函式將通過指定的大小來確定剩餘成員如何被初始化。

如果lpvBits為NULL,並且BITMAPINFO結構的bit count成員初始化為0,那么GetDIBits將不填充BITMAPCOREHEADER結構或點陣圖信息頭結構的顏色表部分。這一技術可用來查詢點陣圖屬性。

應用程式調用這個函式時必須將hbmp參數所標識的點陣圖選擇到一個設備環境中。

自下而上DIB的原點為點陣圖的左下角,自上而下DIB的原點為其左上角。

速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;頭檔案:wingdi.h;庫檔案:gdi32.lib。

相關詞條

相關搜尋

熱門詞條

聯絡我們