BitBlt 関数 (wingdi.h)

BitBlt 関数は、指定したソース デバイス コンテキストからターゲット デバイス コンテキストへのピクセルの四角形に対応する色データのビット ブロック転送を実行します。

構文

BOOL BitBlt(
  [in] HDC   hdc,
  [in] int   x,
  [in] int   y,
  [in] int   cx,
  [in] int   cy,
  [in] HDC   hdcSrc,
  [in] int   x1,
  [in] int   y1,
  [in] DWORD rop
);

パラメーター

[in] hdc

ターゲット デバイス コンテキストのハンドル。

[in] x

コピー先の四角形の左上隅の x 座標を論理単位で指定します。

[in] y

コピー先の四角形の左上隅の y 座標を論理単位で指定します。

[in] cx

ソース四角形と変換先の四角形の幅を論理単位で指定します。

[in] cy

ソースと変換先の四角形の高さを論理単位で指定します。

[in] hdcSrc

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

[in] x1

ソース四角形の左上隅の x 座標 (論理単位)。

[in] y1

ソース四角形の左上隅の y 座標 (論理単位)。

[in] rop

ラスター演算コード。 これらのコードは、ソース四角形の色データを変換先の四角形の色データと組み合わせて最終的な色を実現する方法を定義します。

次の一覧は、一般的なラスター演算コードを示しています。

意味
暗闇
物理パレットのインデックス 0 に関連付けられた色を使用して、変換先の四角形を塗りつぶします。 この色は、既定の物理パレットの場合は黒です。
CAPTUREBLT
結果のイメージ内のウィンドウの上にレイヤー化されたウィンドウが含まれます。 既定では、イメージにはウィンドウのみが含まれます。 これは、通常、印刷デバイスのコンテキストには使用できないので注意してください。
DSTINVERT
変換先の四角形を反転します。
MERGECOPY
ブール値 AND 演算子を使用して、ソース四角形の色を hdcDest で現在選択されているブラシと結合します。
MERGEPAINT
Boolean OR 演算子を使用して、反転元の四角形の色を変換先の四角形の色と結合します。
NOMIRRORBITMAP
ビットマップがミラー化されないようにします。
NOTSRCCOPY
反転元の四角形をコピー先にコピーします。
NOTSRCERASE
Boolean OR 演算子を使用して、変換元とコピー先の四角形の色を結合し、結果の色を反転します。
PATCOPY
hdcDest で現在選択されているブラシをコピー先のビットマップにコピーします。
PATINVERT
現在 hdcDest で選択されているブラシの色と、ブール型 XOR 演算子を使用して変換先の四角形の色を組み合わせます。
PATPAINT
hdcDest で現在選択されているブラシの色と、ブール値 OR 演算子を使用して反転されたソース四角形の色を組み合わせます。 この操作の結果は、Boolean OR 演算子を使用して、変換先の四角形の色と組み合わされます。
SRCAND
Boolean AND 演算子を使用して、ソース四角形と変換先の四角形の色を結合します。
SRCCOPY
コピー元の四角形をコピー先の四角形に直接コピーします。
SRCERASE
Boolean AND 演算子を使用して、変換先の四角形の反転された色とソース四角形の色を組み合わせます。
SRCINVERT
ブール型 XOR 演算子を使用して、ソース四角形と変換先の四角形の色を結合します。
SRCPAINT
Boolean OR 演算子を使用して、ソース四角形と変換先の四角形の色を結合します。
物理パレットのインデックス 1 に関連付けられた色を使用して、コピー先の四角形を塗りつぶします。 この色は、既定の物理パレットの場合は白です。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

BitBlt は宛先 DC でのみクリッピングを行います。

ソース デバイス コンテキストで回転またはせん断変換が有効な場合、 BitBlt はエラーを返します。 ソース デバイス コンテキストに他の変換が存在する場合 (また、一致する変換がターゲット デバイス コンテキストで有効でない場合)、宛先デバイス コンテキストの四角形は、必要に応じてストレッチ、圧縮、または回転されます。

変換元とコピー先のデバイス コンテキストの色形式が一致しない場合、 BitBlt 関数は変換元の色形式を変換先の形式に合わせて変換します。

拡張メタファイルが記録されている場合、ソース デバイス コンテキストが拡張メタファイル デバイス コンテキストを識別するとエラーが発生します。

すべてのデバイスで BitBlt 関数がサポートされているわけではありません。 詳細については、 GetDeviceCaps 関数のRC_BITBLTラスター機能エントリと、 MaskBltPlgBltStretchBlt の各関数を参照してください。

BitBlt は、ソースと宛先のデバイス コンテキストが異なるデバイスを表す場合にエラーを返します。 異なるデバイスの DC 間でデータを転送するには、 GetDIBits を呼び出してメモリ ビットマップを DIB に変換します。 2 番目のデバイスに DIB を表示するには、 SetDIBits または StretchDIBits を呼び出します。

Icm: blit が発生しても、カラー管理は実行されません。

次のコード例では、 BitBlt の使用方法を示します。

if (!BitBlt(hdcMemDC,
    0, 0,
    rcClient.right - rcClient.left, rcClient.bottom - rcClient.top,
    hdcWindow,
    0, 0,
    SRCCOPY))
{
    MessageBox(hWnd, L"BitBlt has failed", L"Failed", MB_OK);
    goto done;
}

この例をコンテキストで確認するには、「 イメージのキャプチャ」を参照してください。

要件

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

こちらもご覧ください

ビットマップ関数

ビットマップの概要

GetDIBits

GetDeviceCaps

MaskBlt

PlgBlt

SetDIBits

Stretchblt

StretchDIBits