MaskBlt 関数 (wingdi.h)

MaskBlt 関数は、指定されたマスク操作とラスター演算を使用して、ソース ビットマップとコピー先ビットマップのカラー データを結合します。

構文

BOOL MaskBlt(
  [in] HDC     hdcDest,
  [in] int     xDest,
  [in] int     yDest,
  [in] int     width,
  [in] int     height,
  [in] HDC     hdcSrc,
  [in] int     xSrc,
  [in] int     ySrc,
  [in] HBITMAP hbmMask,
  [in] int     xMask,
  [in] int     yMask,
  [in] DWORD   rop
);

パラメーター

[in] hdcDest

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

[in] xDest

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

[in] yDest

変換先の四角形の左上隅の y 座標 (論理単位)。

[in] width

ターゲットの四角形とソースのビットマップの幅 (論理単位)。

[in] height

ターゲットの四角形とソースのビットマップの高さ (論理単位)。

[in] hdcSrc

ビットマップのコピー元となるデバイス コンテキストへのハンドル。 dwRop パラメーターでソースを含まないラスター演算を指定する場合は、0 にする必要があります。

[in] xSrc

ソース ビットマップの左上隅の x 座標 (論理単位)。

[in] ySrc

ソース ビットマップの左上隅の論理単位の y 座標。

[in] hbmMask

ソース デバイス コンテキストのカラー ビットマップと組み合わせたモノクロ マスク ビットマップのハンドル。

[in] xMask

hbmMask パラメーターで指定されたマスク ビットマップの水平方向のピクセル オフセット。

[in] yMask

hbmMask パラメーターで指定されたマスク ビットマップの垂直方向のピクセル オフセット。

[in] rop

関数がソース データと変換先データの組み合わせを制御するために使用する、前景と背景の三項ラスター操作コード (ROP)。 背景ラスター演算コードは、この値の上位ワードの上位バイトに格納します。前景ラスター演算コードは、この値の上位ワードの下位バイトに格納します。この値の下位ワードは無視され、0 にする必要があります。 マクロ MAKEROP4 では、前景ラスター操作コードとバックグラウンド ラスター操作コードの組み合わせが作成されます。

この関数のコンテキストでの前景と背景の詳細については、次の「解説」セクションを参照してください。

一般的なラスター演算コード (ROP) の一覧については、 BitBlt 関数を参照してください。 通常、CAPTUREBLT ROP はデバイス コンテキストの印刷には使用できないことに注意してください。

戻り値

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

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

注釈

MaskBlt 関数は、デバイスに依存するビットマップを使用します。

hbmMask で指定されたマスクの値 1 は、dwRop で指定されたフォアグラウンド ラスター操作コードをその場所に適用する必要があることを示します。 マスクの値が 0 の場合は、 dwRop で指定されたバックグラウンド ラスター操作コードを、その場所に適用する必要があることを示します。

ラスター操作でソースが必要な場合は、マスク四角形がソース四角形をカバーする必要があります。 そうでない場合、関数は失敗します。 ラスター操作でソースが必要ない場合、マスク四角形は変換先の四角形をカバーする必要があります。 そうでない場合、関数は失敗します。

この関数の呼び出し時にソース デバイス コンテキストに対して回転変換またはせん断変換が有効な場合は、エラーが発生します。 ただし、他の種類の変換は許可されます。

ソース、パターン、およびコピー先のビットマップの色形式が異なる場合、この関数はパターンまたはソースの形式、またはその両方を変換先の形式に合わせて変換します。

マスク ビットマップがモノクロ ビットマップでない場合は、エラーが発生します。

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

すべてのデバイスが MaskBlt 関数をサポートしているわけではありません。 アプリケーションは、デバイスがこの関数をサポートしているかどうかを判断するために、RC_BITBLTとして nIndex パラメーターを使用して GetDeviceCaps 関数を呼び出す必要があります。

マスク ビットマップが指定されていない場合、この関数は前景ラスター演算コードを使用して BitBlt とまったく同じように動作します。

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

複数のモニター システムで使用する場合、 hdcSrchdcDest の 両方が同じデバイスを参照する必要があります。または、関数が失敗します。 さまざまなデバイスの DC 間でデータを転送するには、 GetDIBits を呼び出してメモリ ビットマップ (互換性のあるビットマップ、または DDB) を DIB に変換します。 2 番目のデバイスに DIB を表示するには、 SetDIBits または StretchDIBits を呼び出します。

要件

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

こちらもご覧ください

Bitblt

ビットマップ関数

ビットマップの概要

GetDIBits

GetDeviceCaps

PlgBlt

SetDIBits

Stretchblt

StretchDIBits