EngPlgBlt 関数 (winddi.h)

EngPlgBlt 関数を使用すると、GDI はビット ブロックの回転転送を実行します。

構文

ENGAPI BOOL EngPlgBlt(
       SURFOBJ         *psoTrg,
       SURFOBJ         *psoSrc,
       SURFOBJ         *psoMsk,
       CLIPOBJ         *pco,
       XLATEOBJ        *pxlo,
       COLORADJUSTMENT *pca,
       POINTL          *pptlBrushOrg,
       POINTFIX        *pptfx,
       RECTL           *prcl,
       POINTL          *pptl,
  [in] ULONG           iMode
);

パラメーター

psoTrg

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

psoSrc

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

psoMsk

ソースのマスクを表すオプションの SURFOBJ 構造体へのポインター。 これは、1 ピクセルあたり 1 ビットのビットマップであるロジック マップによって定義されます。

このマスクは、コピーされるソースの領域を制限します。 マスクには 0xCCAA の暗黙的な rop4 があります。つまり、マスクが 1 の場合はソースをコピーする必要がありますが、マスクが 0 の場合はコピー先を単独のままにする必要があります。

このパラメーターが NULL の場合、0xCCCCの暗黙的な rop4 が存在します。つまり、ソースはソース四角形内のすべての場所にコピーされる必要があります。

マスクは常に、関連するソースを含むのに十分な大きさになります。タイリングは不要です。

pco

変更する変換先の領域を制限する CLIPOBJ 構造体へのポインター。 GDI 関数は、 クリップ領域 を四角形のセットとして列挙します。

可能な限り、GDI は関連するクリッピングを簡略化します。 DrvBitBlt 関数とは異なり、EngPlgBlt は単一のクリッピング四角形で呼び出すことができます。 これにより、出力をクリッピングするときの丸めエラーが回避されます。

pxlo

ソース サーフェスとターゲット サーフェスの間でカラー インデックスを変換する方法を定義する XLATEOBJ 構造体へのポインター。 この XLATEOBJ 構造体を照会して、任意のソース インデックスの RGB 色を検索できます。

色を補間するには、高品質の回転ビット ブロック転送が必要です。

pca

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

pptlBrushOrg

ハーフトーン ブラシの原点を指定する POINTL 構造体へのポインター。 ハーフトーン ブラシを使用するドライバーは、ブラシのパターンの左上のピクセルをデバイスサーフェイスのこのポイントに合わせる必要があります。

pptfx

変換先サーフェスで平行四辺形を定義する 3 つの POINTFIX 構造体へのポインター。 4 つ目の暗黙的な頂点は、D = B + C - A として指定されます。このデータ型の説明については、「 GDI データ型」を参照してください。

EngPlgBlt は、A、B、C の共線で呼び出されることはありません。

prcl

コピーする領域をソース サーフェスの座標系で定義する RECTL 構造体へのポインター。 ソース四角形のポイントは適切に並べられます。 EngPlgBlt に空のソース四角形が指定されることはありません。

pptl

指定されたマスク内のどのピクセルがソース四角形の左上のピクセルに対応するかを指定する POINTL 構造体へのポインター。 psoMskNULL の場合は、このパラメーターを無視します。

[in] iMode

ソース ピクセルを結合して出力ピクセルを取得する方法を定義します。 このパラメーターには、次のいずれかの値を指定できます。

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

WHITEONBLACK、BLACKONWHITE、COLORONCOLOR の各メソッドはシンプルで、古いアプリケーションとの互換性を提供しますが、カラー サーフェスに最適な結果は得られません。

戻り値

関数が成功した場合、戻り値は TRUE です。 それ以外の場合は FALSE で、エラー コードが報告されます。

注釈

EngPlgBlt は、特定の種類の回転のみを実行します。

この関数は、 prcl によって定義された四角形から任意の並列四辺形へのビット ブロック転送を実行します。 並列四辺形は pptfx によって定義されます。 pptfx は、3 つのポイントの配列を指します。

prcl のソース四角形は、指定された整数座標から角が (-0.5,-0.5) ずれた幾何学的な四角形と見なされます。 これは EngStretchBlt のソース四角形と完全に一致します。 ソースの四角形は常に適切に並べ替えられます。

ソース四角形の左上隅は、最初の点 A にマップされます。ソース四角形の右上隅は、2 番目のポイント B にマップされます。ソース四角形の左下隅は、3 番目のポイント C にマップされます。ソース四角形の右下隅は、指定された 3 つのポイントをベクトルとして扱い、計算することによって定義された平行四辺形の暗黙的なポイントにマップされます。

D = B + C - A

ストレッチ blit は、平行四辺形の blit として正確に表すことができますが、変換先に指定された座標は 5 で割り切れるので注意してください。

要件

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

こちらもご覧ください

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt