DrvPlgBlt 関数 (winddi.h)

DrvPlgBlt 関数は、デバイスで管理されるサーフェスと GDI で管理されるサーフェスの組み合わせ間でビット ブロック転送機能を回転させます。

構文

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

パラメーター

[in, out] psoTrg

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

[in, out] psoSrc

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

[in, optional] psoMsk

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

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

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

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

[in] pco

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

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

[in, optional] pxlo

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

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

[in, optional] pca

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

[in, optional] pptlBrushOrg

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

[in] pptfx

変換先サーフェスで平行四辺形を定義する 3 つの POINTFIX 構造体へのポインター。 pptfx[0] を A、pptfx[1] を B、pptfx[2] を C として定義します。A、B、および C は、平行四辺形の 3 つの頂点を定義します。 4 番目の暗黙的な頂点は、次のように指定されます。

    D = B + C − A

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

[in] prcl

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

[in, optional] pptl

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

[in] iMode

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

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

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

戻り値

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

解説

DrvStretchBlt と同様に、DrvPlgBlt を使用すると、特にドライバーがハーフトニングを実行できる場合に、デバイス ドライバーが GDI ビットマップに書き込むことができます。

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

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

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

    D = B + C - A

ストレッチ blt は平行四辺形の blt として正確に表すことができますが、変換先に指定された座標の小数部は 0.5 になります。

グラフィックス ドライバーの場合、DrvPlgBlt は省略可能です。 これは、特定の種類の回転に対してのみ提供されます。 サポートされていない操作を実行するために DrvPlgBlt が呼び出された場合、ドライバーは EngPlgBlt を呼び出す必要があります。

要件

   
対象プラットフォーム デスクトップ
Header winddi.h (Winddi.h を含む)

関連項目

DrvAlphaBlend

DrvBitBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt