GetDIBits 関数 (wingdi.h)

GetDIBits 関数は、指定した互換性のあるビットマップのビットを取得し、指定した形式を使用して DIB としてバッファーにコピーします。

構文

int GetDIBits(
  [in]      HDC          hdc,
  [in]      HBITMAP      hbm,
  [in]      UINT         start,
  [in]      UINT         cLines,
  [out]     LPVOID       lpvBits,
  [in, out] LPBITMAPINFO lpbmi,
  [in]      UINT         usage
);

パラメーター

[in] hdc

デバイス コンテキストへのハンドル。

[in] hbm

ビットマップへのハンドル。 これは互換性のあるビットマップ (DDB) である必要があります。

[in] start

取得する最初のスキャン行。

[in] cLines

取得するスキャン行の数。

[out] lpvBits

ビットマップ データを受け取るバッファーへのポインター。 このパラメーターが NULL の場合、関数はビットマップの次元と形式を lpbmi パラメーターが指す BITMAPINFO 構造体に渡します。

[in, out] lpbmi

DIB データの目的の形式を指定する BITMAPINFO 構造体へのポインター。

[in] usage

BITMAPINFO 構造体の bmiColors メンバーの形式。 次のいずれかの値を指定する必要があります。

説明
DIB_PAL_COLORS
カラー テーブルは、現在の論理パレットに 16 ビット インデックスの配列で構成されている必要があります。
DIB_RGB_COLORS
カラー テーブルは、リテラルの赤、緑、青 (RGB) の値で構成されている必要があります。

戻り値

lpvBits パラメーターが NULL 以外で、関数が成功した場合、戻り値はビットマップからコピーされたスキャン行の数になります。

lpvBits パラメーターが NULL、GetDIBitsBITMAPINFO 構造体を正常に満たす場合、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。

この関数は、次の値を返すことができます。

リターン コード 説明
ERROR_INVALID_PARAMETER
1 つ以上の入力パラメーターが無効です。

解説

DIB の要求された形式が内部形式と一致する場合、ビットマップの RGB 値がコピーされます。 要求された形式が内部形式と一致しない場合は、カラー テーブルが合成されます。 次の表では、各形式で合成されたカラー テーブルについて説明します。

説明
1_BPP カラー テーブルは、黒と白のエントリで構成されます。
4_BPP カラーテーブルは、標準のVGAパレットと同じ色の組み合わせで構成されています。
8_BPP カラー テーブルは、GDI で定義された 256 色の一般的な組み合わせで構成されます。 (これらの 256 色には、既定の論理パレットに含まれる 20 色が含まれます)。
24_BPP カラー テーブルは返されません。
 

lpvBits パラメーターが有効なポインターである場合は、BITMAPINFOHEADER 構造体の最初の 6 つのメンバーを初期化して、DIB のサイズと形式を指定する必要があります。 スキャン行は、RLE 圧縮ビットマップを除き、 DWORD に配置する必要があります。

ボトムアップ DIB は高さを正の数値に設定し、トップダウン DIB は高さを負の数値に設定して指定します。 ビットマップ カラー テーブルが BITMAPINFO 構造体に追加されます。

lpvBitsNULL の場合、GetDIBitslpbi が指す最初の構造体の最初のメンバーを調べます。 このメンバーは、 BITMAPCOREHEADER または BITMAPINFOHEADER 構造体のサイズをバイト単位 指定する必要があります。 関数は、指定したサイズを使用して、残りのメンバーを初期化する方法を決定します。

lpvBitsNULL、BITMAPINFO のビット数メンバーが 0 に初期化されている場合、GetDIBits は、カラー テーブルを使用せずに BITMAPINFOHEADER 構造体または BITMAPCOREHEADER を入力します。 この手法は、ビットマップ属性のクエリに使用できます。

アプリケーションがこの関数を呼び出すときに、 hbmp パラメーターで識別されるビットマップをデバイス コンテキストに選択しないでください。

ボトムアップ DIB の原点は、ビットマップの左下隅です。トップダウン DIB の原点は左上隅です。

例については、「 イメージのキャプチャ」を参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wingdi.h (Windows.h を含む)
Library Gdi32.lib
[DLL] Gdi32.dll

関連項目

BITMAPCOREHEADER

BITMAPINFO

BITMAPINFOHEADER

ビットマップ関数

ビットマップの概要

SetDIBits