<Return[G]><Top>

GetDIBits

Declare Function Api_GetDIBits& Lib "gdi32" Alias "GetDIBits" (ByVal aHDC&, ByVal hBitmap&, ByVal nStartScan&, ByVal nNumScans&, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage&)

Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long

指定されたビットマップのビットを取得し、指定された形式でバッファへコピーする。

パラメータ
hdc
    デバイスコンテキストのハンドルを指定する。
hbmp
    ビットマップのハンドルを指定する。
uStartScan
    取得対象の最初の走査行を指定する。
cScanLines
    取得対象の走査行の数を指定する。
lpvBits
    バッファへのポインタを指定する。関数から制御が返ると、このバッファにビットマップデータが格納される。

    NULL を指定すると、ビットマップのサイズと形式が、lpbi パラメータが指す BITMAPINFO 構造体に格納される。
lpbi
    DIB データの希望のデータ形式を保持している、1 個の BITMAPINFO 構造体へのポインタを指定する。

    関数から制御が返ると、元のデータ形式が格納されたままである。
uUsage
    BITMAPINFO 構造体の bmiColors メンバの形式を指定する。次の値のいずれかを指定する。

    値                             

意味                                                                                                                                    

    DIB_PAL_COLORS

カラーテーブルは、現在の論理パレットに関連する 16 ビットのインデックス番号からなる配列である。

    DIB_RGB_COLORS

カラーテーブルは、RGB 値そのものである。


戻り値
    lpvBits パラメータが NULL 以外のときに関数が成功すると、コピーされた走査行の数が返る。
    Windows 95/98:lpvBits パラメータが NULL のときに関数が BITMAPINFO 構造体への書き込みに成功すると、ビットマップの走査行

    の数が返る。
    Windows NT/2000:lpvBits パラメータが NULL のときに関数が BITMAPINFO 構造体への書き込みに成功すると、0 以外の値が返

    る。
    関数が失敗すると 0 が返る。
    Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    要求した DIB の形式が内部形式と一致した場合、ビットマップの RGB 値がコピーされる。一致しなかった場合、カラーテーブルが合成さ  

    れる。次の表は、各形式で合成されるカラーテーブルを示す。

    値             

意味                                                                                                                       

    1_BPP

カラーテーブルは、黒と白のエントリで構成されている。

    4_BPP

カラーテーブルは、標準 VGA パレットと同じ混合色で構成されている。

    8_BPP

カラーテーブルは、GDI で定義された汎用の 256 色で構成されている。

 

(これらの 256 色には、既定の論理パレットで定義されている 20 色も含まれている。)

    24_BPP

カラーテーブルは、返されない。

    lpvBits パラメータに有効なポインタを指定する場合は、BITMAPINFOHEADER 構造体の最初の 6 つのメンバに DIB のサイズやデータ

    形式を設定しておかなければならない。RLE 圧縮ビットマップを除き、走査行は DWORD 境界に整列しておかなければならない。
    高さに正の値を指定するとボトムアップのビットマップデータ(一般的なビットマップデータ)が、負の値を指定するとトップダウンのビットマップ

    データが格納される。ビットマップのカラーテーブルは、BITMAPINFO 構造体へ追加される。
    lpvBits が NULL の場合、GetDIBits は lpbi が指す最初の構造体の最初のメンバを調べます。このメンバは、

    BITMAPCOREHEADER または BITMAPINFOHEADER 構造体のサイズをバイト単位で指定していなければならない。

    この関数は指定されたサイズを使って、残りのメンバを初期化する方法を決定する。
    lpvBits が NULL で、BITMAPINFO 構造体のビットカウントメンバ(biBitCount)が 0 に初期化されている場合、GetDIBits はカラーテ

    ーブルを含めずに、BITMAPINFOHEADER または BITMAPCOREHEADER への書き込みを行う。この手法を使って、ビットマップ属性

    の問い合わせを行る。
    hbmp パラメータが示すビットマップがデバイスコンテキストで選択されている場合、この関数を呼び出さないこと。
    ボトムアップ DIB の原点は、ビットマップの左下隅である。トップダウン DIB の原点は、左上隅である。