DrvGradientFill 関数 (winddi.h)
DrvGradientFill 関数は、指定されたプリミティブを網掛けします。
構文
BOOL DrvGradientFill(
[in, out] SURFOBJ *psoDest,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in] TRIVERTEX *pVertex,
[in] ULONG nVertex,
[in] PVOID pMesh,
[in] ULONG nMesh,
[in] RECTL *prclExtents,
[in] POINTL *pptlDitherOrg,
[in] ULONG ulMode
);
パラメーター
[in, out] psoDest
描画するサーフェスを識別する SURFOBJ 構造体へのポインター。
[in] pco
CLIPOBJ 構造体へのポインター。 クリップ領域を四角形のセットとして列挙するために、CLIPOBJ_Xxx サービス ルーチンが用意されています。 この列挙は、変更先の領域を制限します。 可能な限り、GDI は関連するクリッピングを簡略化します。
[in, optional] pxlo
XLATEOBJ 構造体へのポインター。 このパラメーターは、ドライバーでは無視する必要があります。
[in] pVertex
位置と色の情報を含む各エントリを含む TRIVERTEX 構造体の配列へのポインター。 TRIVERTEX 構造体については、Microsoft Windows SDKドキュメントで説明されています。
[in] nVertex
pVertex が指す配列内の TRIVERTEX 構造体の数を指定します。
[in] pMesh
pVertex が指す TRIVERTEX 要素の接続性を定義する構造体の配列へのポインター。
四角形が描画されている場合、 pMesh はGRADIENT_RECT構造体の配列を指し、それぞれが四角形を定義する 2 つの TRIVERTEX 要素を指定します。 TRIVERTEX 要素は、対角線上の四角形の頂点のペアを表すことができます。 四角形の描画は右下に排他的です。 TRIVERTEX とGRADIENT_RECTの両方が、Windows SDKドキュメントで定義されています。
三角形が描画されている場合、 pMesh はGRADIENT_TRIANGLE構造体の配列を指し、それぞれが三角形を定義する 3 つの TRIVERTEX 要素を指定します。 三角形の描画は右下がり専用です。 GRADIENT_TRIANGLEは、Windows SDKドキュメントで定義されています。
[in] nMesh
pMesh が指す配列内の要素の数を指定します。
[in] prclExtents
グラデーション描画を行う領域を定義する RECTL 構造体へのポインター。 ポイントは、変換先サーフェスの座標系で指定されます。 このパラメーターは、描画操作のサイズを見積もる場合に便利です。
[in] pptlDitherOrg
ディザリングのためにサーフェス上の原点を定義する POINTL 構造体へのポインター。 ディザ パターンの左上のピクセルがこの点に揃っています。
[in] ulMode
現在の描画モードと、 pMesh が指す配列の解釈方法を指定します。 このパラメーターには、次のいずれかの値を指定できます。
GRADIENT_FILL_RECT_H
pMesh パラメーターは、GRADIENT_RECT構造体の配列を指します。 各四角形は、左から右に網掛けされます。 具体的には、左上と左下のピクセルは、右上と右下のピクセルと同じ色になります。
GRADIENT_FILL_RECT_V
pMesh パラメーターは、GRADIENT_RECT構造体の配列を指します。 各四角形は、上から下に網掛けされます。 具体的には、左上と右上のピクセルは、左下と右下のピクセルと同じ色です。
GRADIENT_FILL_TRIANGLE
pMesh パラメーターは、GRADIENT_TRIANGLE構造体の配列を指します。
各モードの グラデーション塗りつぶし の計算については、「解説」セクションに記載されています。
戻り値
成功すると、DrvGradientFill は TRUE を 返します。 それ以外の場合は FALSE を 返し、 EngSetLastError を呼び出してエラーを報告します。
注釈
DrvGradientFill は、必要に応じてグラフィックス ドライバーに実装できます。 GDI はパレット化されたサーフェスに対してこの関数を呼び出しません。
ドライバーは、EngAssociateSurface または EngModifySurface を呼び出すときに HOOK_GRADIENTFILL フラグを設定することで DrvGradientFill をフックします。 ドライバーが DrvGradientFill をフックし、サポートされていない操作を実行するために呼び出された場合、ドライバーは 、EngGradientFill の呼び出しでデータをパントすることによって GDI に操作を処理させる必要があります。
GDI は、8bpp 変換先サーフェスに対して DrvGradientFill を呼び出しません。
プリミティブの各ピクセルで色の値を計算するための数式は、次のように ulMode に依存します。
3 つのカラー チャネルすべてに累積される合計エラーは、8 つ (8) を超えてはなりません。 許容されるエラーの詳細については、「 ディスプレイ ドライバーの特殊効果」を参照してください。
ドライバーは頂点のアルファ値を無視する必要があり、アルファ ブレンドをサポートするサーフェスではアルファ チャネルは変更されません。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | winddi.h (Winddi.h を含む) |