EngBitBlt 関数 (winddi.h)

EngBitBlt 関数は、デバイスで管理されるサーフェス間、またはデバイス管理サーフェスと GDI で管理される標準形式ビットマップの間で、一般的なビット ブロック転送機能を提供します。

構文

ENGAPI BOOL EngBitBlt(
       SURFOBJ  *psoTrg,
       SURFOBJ  *psoSrc,
       SURFOBJ  *psoMask,
       CLIPOBJ  *pco,
       XLATEOBJ *pxlo,
       RECTL    *prclTrg,
       POINTL   *pptlSrc,
       POINTL   *pptlMask,
       BRUSHOBJ *pbo,
       POINTL   *pptlBrush,
  [in] ROP4     rop4
);

パラメーター

psoTrg

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

psoSrc

rop4 に必要な場合は、ビット ブロック転送操作のソースを定義する SURFOBJ 構造体へのポインター。

psoMask

マスクとして使用するサーフェスを定義する SURFOBJ 構造体へのポインター。 マスクは、1 ピクセルあたり 1 ビットのビットマップとして定義されます。 通常、マスクは、変換先サーフェスで変更される領域を制限します。 値が0xAACCされた rop4 によってマスクが選択されます。 マスクが 0 の場合、ターゲット サーフェスは影響を受けません。

マスクは、目的の四角形を覆うのに十分な大きさです。

このパラメーターの値が NULL で、 rop4 でマスクが必要な場合は、ブラシの暗黙的なマスクが使用されます。 マスクが必要な場合、 psoMask はブラシ内の暗黙的なマスクをオーバーライドします。

pco

CLIPOBJ 構造体へのポインター。 クリップ領域を四角形のセットとして列挙するために、CLIPOBJ_Xxx サービス ルーチンが用意されています。 この列挙は、変更される変換先の領域を制限します。 可能な限り、GDI は関連するクリッピングを簡略化します。たとえば、この関数は単一のクリッピング四角形で呼び出されることはありません。 GDI は、この関数を呼び出す前に変換先の四角形をクリップし、追加のクリッピングを不要にします。

pxlo

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

prclTrg

変更する領域を定義する、変換先サーフェスの座標系内の RECTL 構造体へのポインター。 四角形は 2 つのポイントで定義されます。左上と右下。 この四角形の下端と右端はビット ブロック転送の一部ではありません。つまり、四角形は右下に排他的です。

EngBitBlt は、空の変換先の四角形で呼び出されることはありません。 四角形を定義する 2 つのポイントは、常に適切に並べられます。

pptlSrc

ソースが存在する場合は、ソース四角形の左上隅を定義する POINTL 構造体へのポインター。 ソースがない場合、ドライバーはこのパラメーターを無視する必要があります。

pptlMask

マスク内のどのピクセルがターゲット四角形の左上隅に対応するかを定義する POINTL 構造体へのポインター。 psoMask でマスクが指定されていない場合、ドライバーはこのパラメーターを無視する必要があります。

pbo

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

pptlBrush

ターゲット サーフェス内のブラシの原点を定義する POINTL 構造体へのポインター。 この時点でブラシの左上のピクセルが揃い、そのサイズに従ってブラシが繰り返されます。 rop4 パラメーターにパターンが必要ない場合は、このパラメーターを無視します。

[in] rop4

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

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

戻り値

関数が成功した場合、戻り値は TRUE です。 それ以外の場合は FALSE になり、エラー コードがログに記録されます。

解説

デバイスのサーフェスが標準形式のビットマップとして編成されている場合、ドライバーは EngBitBlt を呼び出すことによって GDI にビット ブロック転送を実行するように要求できます。 ドライバーは、単純な転送を迅速に処理する特別なハードウェアがあるが、複雑な転送で呼び出しを処理したくない場合にこれを行う可能性があります。

ラスター操作の詳細については、Microsoft Windows SDKドキュメントを参照してください。

要件

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

関連項目

BRUSHOBJ

BRUSHOBJ_pvGetRbrush

CLIPOBJ

DrvBitBlt

EngAssociateSurface

SURFOBJ

XLATEOBJ