DrvStrokePath 関数 (winddi.h)

DrvStrokePath 関数は、パスをストローク (アウトライン) します。

構文

BOOL DrvStrokePath(
  [in, out]      SURFOBJ   *pso,
  [in]           PATHOBJ   *ppo,
  [in]           CLIPOBJ   *pco,
  [in, optional] XFORMOBJ  *pxo,
  [in]           BRUSHOBJ  *pbo,
  [in]           POINTL    *pptlBrushOrg,
  [in]           LINEATTRS *plineattrs,
  [in]           MIX       mix
);

パラメーター

[in, out] pso

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

[in] ppo

PATHOBJ 構造体へのポインター。 GDI PATHOBJ_Xxx サービス ルーチンは、パスを構成する行、ベジエ曲線、およびその他のデータを列挙するために提供されます。 これは、描画する内容を示します。

[in] pco

CLIPOBJ 構造体へのポインター。 GDI CLIPOBJ_Xxx サービス ルーチンは、 クリップ領域 を四角形のセットとして列挙するために提供されます。 必要に応じて、パス内のすべての行を CLIPOBJ 構造体でプリクリップして列挙できます。 つまり、ドライバーは GDI ですべての行クリッピング計算を実行できます。

[in, optional] pxo

XFORMOBJ 構造体へのポインター。 これは、幾何学的な幅の線を描画する場合にのみ必要です。 ワールド座標をデバイス座標にマップする変換を指定します。 これは、パスはデバイス座標で提供されますが、実際には幾何学的な幅の広い線がワールド座標で広がっているために必要です。

XFORMOBJ 構造体に対してクエリを実行して、変換を見つけることができます。

[in] pbo

パスの描画時に使用するブラシを指定する BRUSHOBJ 構造体へのポインター。

[in] pptlBrushOrg

デバイス上のブラシ パターンの配置に使用されるブラシの原点を指定する POINTL 構造体へのポインター。

[in] plineattrs

LINEATTRS 構造体へのポインター。 行のスタイルが設定されている場合は、この構造体の elStyleState メンバーをこの関数の一部として更新する必要があることに注意してください。 また、1 ピクセル幅の化粧線が描画されている場合は、 ptlLastPel メンバーを更新する必要があります。

[in] mix

ブラシに使用する前景と背景のラスター操作を定義するミックス モード。 ミックス モードの詳細については、「解説」を参照してください。

戻り値

ドライバーがパスをストロークできる場合、戻り値は TRUE です。 GDI がパスをストロークする必要がある場合、戻り値は FALSE ですが、エラー コードはログに記録されません。 ドライバーでエラーが発生した場合、戻り値はDDI_ERRORされ、エラー コードが報告されます。

注釈

ドライバーが関数をフックし、適切な GCAPS が設定されている場合、GDI は GDI が任意の属性セットを持つ線または曲線を描画するときに DrvStrokePath を呼び出します。

ドライバーがこのエントリ ポイントをサポートしている場合は、任意のクリッピングを持つ幅の広い線の描画もサポートする必要があります。 指定された GDI 関数を使用すると、呼び出しを、事前計算済みのクリッピングを含む一連の単一ピクセル幅の行に分割できます。

この関数は、 デバイスで管理されるサーフェスで描画を行う場合に必要です。

高度なデバイスのドライバーは、必要に応じてこの呼び出しを受け取って、ベジエ曲線と幾何学的な幅の線を含むパスを描画できます。 GDI は、DEVINFO 構造体の flGraphicsCaps メンバーのGCAPS_BEZIERSフラグとGCAPS_GEOMETRICWIDE フラグをテストして、この関数を呼び出す必要があるかどうかを判断します。 (ビットの 4 つの組み合わせによって、この呼び出しの 4 つのレベルの機能が決まります)。ドライバーがベジエ曲線または幾何学的な幅の線を含む高度な呼び出しを受け取った場合、呼び出しを処理しないことを決定でき、 FALSE を返します。 これは、パスまたはクリッピングが複雑すぎてデバイスが処理できなくなる場合に発生する可能性があります。 呼び出しで FALSE が返された場合、GDI は呼び出しをより簡単に処理できる単純な呼び出しに分割します。

デバイスで管理されるサーフェスの場合、この関数は、単色ブラシを使用して、単一ピクセル幅のソリッドおよびスタイル付けされた化粧線を最小限にサポートする必要があります。

ミックス モードでは、受信パターンをデバイスサーフェイスに既に存在するデータと混合する方法を定義します。 MIX データ型は、1 つの ULONG にパックされた 2 つのバイナリ ラスター演算 (ROP2) 値で構成されます。 最下位バイトは、前景ラスター演算を定義します。次のバイトは、バックグラウンド ラスター演算を定義します。 ラスター演算コードの詳細については、Microsoft Windows SDKドキュメントを参照してください。

要件

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

こちらもご覧ください

CLIPOBJ

DEVINFO

DrvFillPath

LINEATTRS

PATHOBJ

XFORMOBJ