PFN_DrvStrokeAndFillPath
コールバックシグネチャ
BOOL PFN_DrvStrokeAndFillPath(
SURFOBJ* param0,
PATHOBJ* param1,
CLIPOBJ* param2,
XFORMOBJ* param3,
BRUSHOBJ* param4,
LINEATTRS* param5,
BRUSHOBJ* param6,
POINTL* param7,
DWORD param8,
DWORD param9
);パラメーター
| フィールド | 型 |
|---|---|
| param0 | SURFOBJ* |
| param1 | PATHOBJ* |
| param2 | CLIPOBJ* |
| param3 | XFORMOBJ* |
| param4 | BRUSHOBJ* |
| param5 | LINEATTRS* |
| param6 | BRUSHOBJ* |
| param7 | POINTL* |
| param8 | DWORD |
| param9 | DWORD |
公式ドキュメント
DrvStrokeAndFillPath 関数は、パスのストローク(輪郭描画)と塗りつぶしを同時に行います。
戻り値
ドライバーがパスを塗りつぶせる場合、戻り値は TRUE です。そうではなく GDI がパスを塗りつぶすべき場合、戻り値は FALSE です。エラーが発生した場合、戻り値は DDI_ERROR となり、エラーコードがログに記録されます。
解説(Remarks)
ストロークに太い線を使用する場合は、その分だけ塗りつぶし領域を縮小して補正する必要があります。
パスやクリッピングがデバイスで処理するには複雑すぎる場合、ドライバーは FALSE を返すことができます。その場合、GDI はより単純な呼び出しに変換します。たとえば、デバイスドライバーが DEVINFO 構造体の flGraphicsCaps メンバーに GCAPS_BEZIERS フラグを設定していて、ベジェ曲線を含むパスを受け取った場合、FALSE を返すことができます。すると GDI はベジェ曲線を直線に変換し、DrvStrokeAndFillPath を再度呼び出します。デバイスドライバーが再び FALSE を返した場合、GDI はさらに呼び出しを単純化し、パスを構成する線の混合モードや幅に応じて、DrvStrokePath と DrvFillPath、または DrvBitBlt を呼び出します。
混合モード(mix mode)は、入力されるパターンをデバイスサーフェス上に既にあるデータとどのように混合するかを定義します。MIX データ型は、2 つのバイナリラスターオペレーション (ROP2) 値を 1 つの ULONG にパックしたものです。最下位バイトが前景のラスターオペレーションを、次のバイトが背景のラスターオペレーションを定義します。ラスターオペレーションコードの詳細については、Microsoft Windows SDK のドキュメントを参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)