EngStretchBltROP 関数 (winddi.h)

EngStretchBltROP 関数は、ROP を使用してストレッチ ビット ブロック転送を実行します。

構文

ENGAPI BOOL EngStretchBltROP(
       SURFOBJ         *psoDest,
       SURFOBJ         *psoSrc,
       SURFOBJ         *psoMask,
       CLIPOBJ         *pco,
       XLATEOBJ        *pxlo,
       COLORADJUSTMENT *pca,
       POINTL          *pptlHTOrg,
  [in] RECTL           *prclDest,
  [in] RECTL           *prclSrc,
       POINTL          *pptlMask,
  [in] ULONG           iMode,
       BRUSHOBJ        *pbo,
  [in] DWORD           rop4
);

パラメーター

psoDest

描画するサーフェスを記述する SURFOBJ 構造体へのポインター。

psoSrc

ビット ブロック転送のソース サーフェスを記述する SURFOBJ 構造体へのポインター。

psoMask

ソース サーフェスのマスクを定義する SURFOBJ 構造体へのポインター。 マスクは、ピクセルあたり 1 ビットのビットマップであるロジック マップによって定義されます。 通常、マスクは、変換先サーフェスで変更される領域を制限します。 このマスクは、常にソース サーフェスと同じサイズにする必要があります。

pco

変換先で変更する領域を制限する CLIPOBJ 構造体へのポインター。 CLIPOBJ_Xxx サービス ルーチンは、クリップ領域を一連の四角形として列挙するために提供されます。

可能な限り、GDI は関連するクリッピングを簡略化します。 ただし、 EngBitBlt とは異なり、 EngStretchBltROP は 1 つのクリッピング四角形で呼び出すことができます。 これにより、出力のクリッピングで丸めエラーが発生するのを防ぐことができます。

pxlo

ソース サーフェスとターゲット サーフェスの間でカラー インデックスを変換する方法を指定する XLATEOBJ 構造体へのポインター。

この XLATEOBJ 構造体を照会して、任意のソース インデックスの RGB 色を検索することもできます。 高品質のストレッチ ビット ブロック転送では、場合によっては色を補間する必要があります。

pca

ビットをストレッチする前にソース ビットマップに適用する色調整値を定義する COLORADJUSTMENT 構造体へのポインター。 詳細については、Windows SDKドキュメントを参照してください。

pptlHTOrg

変換先サーフェス上のハーフトーン ブラシの原点を定義する POINTL 構造体へのポインター。 ハーフトーン ブラシを使用する場合、GDI は、この時点でブラシのパターンの左上のピクセルを揃え、その寸法に従ってブラシを繰り返します。 rop4 パラメーターにパターンが必要ない場合、GDI はこのパラメーターを無視します。

[in] prclDest

変更する四角形領域を定義する RECTL 構造体へのポインター。 この四角形は、変換先サーフェスの座標系で指定され、左上と右下の 2 つの点で定義されます。 四角形を定義する 2 つの点は、常に順序が適切であるとは限りません。つまり、2 番目の点の座標が、必ずしも最初の点の座標よりも大きいとは限りません。 変換先の四角形が適切に順序付けされていない場合は、GDI によって順序付けされます。

四角形は右下の排他的です。つまり、その下端と右端はコピーの一部ではありません。

EngStretchBltROP は 、空の変換先の四角形で呼び出さないでください。

[in] prclSrc

コピーする領域を定義する RECTL 構造体へのポインター。 この四角形は、ソース サーフェスの座標系で指定され、左上と右下の 2 つの点で定義されます。 四角形を定義する 2 つの点は、常に適切に並べ替えられます。

四角形は右下の排他的です。つまり、その下端と右端はコピーの一部ではありません。

この四角形は、 prclDest がポイントする四角形にマップされます。

EngStretchBltROP は 、空のソース四角形で呼び出さないでください。

pptlMask

prclMask が指すマスク内のピクセルを定義する POINTL 構造体へのポインター。 このピクセルは、 prclSrc がポイントするソース四角形の左上のピクセルに対応します。 マスクが指定されていない場合、このパラメーターは無視されます。つまり、prclMask が NULL の場合、GDI は pptlMask を無視します

[in] iMode

ソース ピクセルを結合して出力ピクセルを取得する方法を指定します。 HALFTONE モードは他のモードよりも低速ですが、高品質の画像が生成されます。 このパラメーターには、次のいずれかの値を指定できます。

意味
BLACKONWHITE 縮小ビット ブロック転送では、GDI はピクセルをブール値 AND 演算と組み合わせます。 ストレッチ ビット ブロック転送では、ピクセルがレプリケートされます。
COLORONCOLOR 縮小ビット ブロック転送では、GDI は十分なピクセルを無視するため、ピクセルを組み合わせる必要はありません。 ストレッチ ビット ブロック転送では、ピクセルがレプリケートされます。
ハーフトーン GDI は、入力の色または灰色のレベルを最もよく近似するために、出力サーフェイス内のピクセルのグループを使用します。
WHITEONBLACK 縮小ビット ブロック転送では、ピクセルをブール値 OR 演算と組み合わせる必要があります。 ストレッチ ビット ブロック転送では、ピクセルをレプリケートする必要があります。

pbo

ビット ブロック転送のパターンを定義するために使用する BRUSHOBJ 構造体へのポインター。 GDI の BRUSHOBJ_pvGetRbrush サービス ルーチンは、デバイスのブラシの実現を取得します。 rop4 パラメーターにパターンが必要ない場合、GDI はこのパラメーターを無視します。

[in] rop4

マスク、パターン、ソース、およびターゲット ピクセルを結合して出力ピクセルを変換先サーフェスに書き込む方法を定義するラスター演算を表します。

これは第 4 級ラスター演算であり、通常の三項 Rop3 操作の自然な拡張です。 Rop4 には 16 個の関連ビットがあり、Rop3 の 8 つの定義ビットに似ています。 (Rop3 の他の冗長ビットは無視されます)。Rop4 を実装する最も簡単な方法は、2 バイトを個別に考慮することです。 下位バイトは、 psoMask が指すマスクが 1 の場所で計算する必要がある Rop3 を指定します。 高バイトは、マスクが 0 の場合はどこでも計算および適用できる Rop3 を指定します。

戻り値

EngStretchBltROP は 、成功すると TRUE を 返します。 それ以外の場合は、エラーを報告し、 FALSE を返します

注釈

ドライバーは 、DrvStretchBltROP をフックしているが、すべての操作をサポートできない場合は、 EngStretchBltROP を 呼び出す必要があります。

マッピングは、 prclSrcprclDest によって定義されます。 prclDest および prclSrc で指定された点は、ピクセル中心に対応する整数座標にあります。 このような 2 つの点で定義された四角形は、指定された点を座標とする 2 つの頂点を持つ幾何学的な四角形と見なされますが、各座標から 0.5 が減算されます。 (POINTL 構造体は、これらの小数座標頂点を指定するための短縮表記です)。

要件

要件
サポートされている最小のクライアント Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム ユニバーサル
Header winddi.h (Winddi.h を含む)
Library Win32k.lib
[DLL] Win32k.sys

こちらもご覧ください

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngTransparentBlt