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 が発生した場合、カラー管理は実行されません。
複数のモニター システムで使用する場合、 hdcSrc と hdcDest の 両方が同じデバイスを参照する必要があります。または、関数が失敗します。 さまざまなデバイスの 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 |