次の方法で共有


DrvTransparentBlt 関数 (winddi.h)

DrvTransparentBlt 関数は、透過性を備えたビット ブロック転送機能を提供します。

構文

BOOL DrvTransparentBlt(
  [in, out]      SURFOBJ  *psoDst,
  [in]           SURFOBJ  *psoSrc,
  [in]           CLIPOBJ  *pco,
  [in, optional] XLATEOBJ *pxlo,
  [in]           RECTL    *prclDst,
  [in]           RECTL    *prclSrc,
  [in]           ULONG    iTransColor,
  [in]           ULONG    ulReserved
);

パラメーター

[in, out] psoDst

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

[in] psoSrc

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

[in] pco

CLIPOBJ 構造体へのポインター。 CLIPOBJ_Xxx サービス ルーチンは、 クリップ領域 を一連の四角形として列挙するために提供されます。 この列挙は、変更される宛先の領域を制限します。 可能な限り、GDI は関連するクリッピングを簡略化します。

[in, optional] pxlo

ターゲット サーフェスへの書き込みのためにソース カラー インデックスを変換する方法を示す XLATEOBJ 構造体へのポインター。 pxloNULL の場合、変換は必要ありません。

[in] prclDst

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

DrvTransparentBlt は、空の変換先の四角形で呼び出されることはありません。

[in] prclSrc

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

ソースの四角形がソース サーフェスの境界を超えることはなく、ソース サーフェスがオーバーハングすることはありません。

この四角形は、 prclDst によって定義された変換先の四角形にマップされます。 DrvTransparentBlt は、空のソース四角形で呼び出されることはありません。

[in] iTransColor

ソース サーフェス形式の物理的な透明色を指定します。 パレットを持つデバイスの場合、この値はパレット インデックスです。 パレットのないデバイスの場合、この値はソース サーフェスで使用される形式の RGB 色です。 たとえば、ソース サーフェス形式が 5:6:5 RGB 形式の場合、このパラメーターの値も同じ形式になります。

[in] ulReserved

予約;このパラメーターは 0 に設定する必要があります。

戻り値

DrvTransparentBlt は、成功すると TRUE を 返します。 それ以外の場合は、 FALSE を返します。

注釈

必要に応じて、グラフィックス ドライバーに DrvTransparentBlt 関数を実装できます。

透過性を使用したビット ブロック転送は、2 つのデバイス管理サーフェス間、またはデバイス管理サーフェスと GDI マネージド標準形式ビットマップの間でサポートされます。 ドライバー ライターは、ビデオ メモリ内のオフスクリーン デバイス ビットマップからビデオ メモリ内の他のサーフェスへの blting のケースをサポートすることをお勧めします。他のすべてのケースは、パフォーマンスの低下がほとんどなく EngTransparentBlt にパントできます。 ドライバーは、デバイスで管理されたサーフェスを含む呼び出しを EngTransparentBlt にパントできます。

iTransColor で指定された透明色に一致するソース サーフェス上のピクセルはコピーされません。 透過的な blts の詳細については、「ビットマップの コピー」を参照してください。

ドライバーは、同じサーフェス上に重複するソースと宛先の四角形で呼び出されることはありません。

ドライバーは、ビットマップ形式が 5:5:5 (赤、緑、青のそれぞれ 5 ビット) の場合、最も重要なビットなど、カラー キー比較で使用されていないビットを無視する必要があります。

ドライバーは、EngAssociateSurface を呼び出すときに HOOK_TRANSPARENTBLT フラグを設定することで、DrvTransparentBlt をフックします。 ドライバーが DrvTransparentBlt をフックし、サポートされていない操作を実行するために呼び出された場合、ドライバーは EngTransparentBlt への呼び出しでデータを転送することによって GDI が操作を処理する必要があります。

要件

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

こちらもご覧ください

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

EngAssociateSurface

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt