EngStretchBlt 関数 (winddi.h)

EngStretchBlt 関数を使用すると、GDI はストレッチ ビット ブロック転送を実行します。

構文

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

パラメーター

psoDest

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

psoSrc

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

psoMask

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

マスクは、コピーされるソースの領域を制限します。 このパラメーターを指定すると、0xCCAAの暗黙的な rop4 が含まれます。つまり、マスクが 1 の場合はソースをコピーする必要がありますが、マスクが 0 の場合は、コピー先を単独で残す必要があります。

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

pco

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

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

pxlo

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

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

[in] pca

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

[in] pptlHTOrg

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

[in] prclDest

変換先サーフェスの座標系で変更する領域を定義する RECTL 構造体へのポインター。 この四角形は、適切に順序付けされていない 2 つのポイントによって定義されます。つまり、2 番目のポイントの座標は、必ずしも最初のポイントの座標よりも大きくはありません。 説明されている四角形には、下端と右端は含まれません。 この関数は、空の変換先の四角形で呼び出されることはありません。

変換先の四角形の順序が適切でない場合は、 EngStretchBlt によって適切に順序付けされます。

[in] prclSrc

コピーする領域を定義する RECTL 構造体へのポインター(ソース サーフェスの座標系)。 四角形は 、prclDest によって定義された四角形にマップされます。 この関数には空のソース四角形が指定されることはなく、ソース四角形のポイントは常に適切に並べられます。

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

四角形の端はピクセルと交差することはありませんが、一連のピクセルの周りを移動します。 四角形の内側にあるピクセルは、右下の排他的な四角形で想定されるピクセルです。 EngStretchBlt は、ジオメトリック ソースの四角形を、ジオメトリック変換先の四角形に正確にマップします。

pptlMask

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

[in] iMode

ソース ピクセルを結合して出力ピクセルを取得する方法を指定します。 HALFTONE モードは他のモードよりも遅くなりますが、高品質の画像が生成されます。

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

戻り値

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

注釈

この関数を使用すると、GDI ビットマップとデバイス サーフェスに同じハーフトニング アルゴリズムを適用できます。

ドライバーが DrvStretchBlt をフックし、ドライバーがサポートしていない操作を実行するために呼び出された場合、ドライバーは EngStretchBlt を呼び出す必要があります。

要件

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

こちらもご覧ください

CLIPOBJ

DrvBitBlt

DrvStretchBlt

SURFOBJ

XLATEOBJ