DrawPathEvenOdd
ベクターグラフィックス、パスの定義と描画
説明
現在のパスを、偶奇塗りつぶし規則で描画する。これは DrawPath が使用する非ゼロ巻数規則の代わりとなる。偶奇規則では、ある点から引いた光線がパスと奇数回交差すると、その点はパスの "inside" と見なされる — そのため、重なるサブパスは方向を考慮せずに塗りつぶし帯と非塗りつぶし帯が交互になる
構文
Delphi
Function TPDFlib.DrawPathEvenOdd(PathOptions: Integer): Integer;
ActiveX
Function PDFlib::DrawPathEvenOdd(PathOptions As Long) As Long
DLL
int DLDrawPathEvenOdd(int InstanceID, int PathOptions);
パラメータ
| PathOptions | 描画モード: 0 — アウトラインのみ 1 — 塗りつぶしのみ(偶奇規則) 2 — 塗りつぶしとアウトライン |
|---|
戻り値
| 0 | 失敗 — PathOptions が範囲外、文書が開かれていない、またはパスが開始されていません |
|---|---|
| 1 | パスは正常に描画された |
備考
ドーナツ、ワッシャー、または大きな輪郭に穴を開ける図形などを構築するときは偶奇規則を使用します DrawPath が使用する非ゼロ巻き数規則では、同じ構築は内側のサブパスを反対方向に描画した場合にのみ機能しますが、偶奇規則では方向は関係ありません
例
// A filled square with a circular hole cut through it (donut)
PDF.SetFillColor(0, 0.4, 0.7);
PDF.StartPath(100, 100);
PDF.AddLineToPath(200, 100);
PDF.AddLineToPath(200, 200);
PDF.AddLineToPath(100, 200);
PDF.ClosePath;
// Inner circle — direction does not matter under even-odd
PDF.StartPath(170, 150); // start on the right side of the circle
PDF.AddArcToPath(150, 150, 360); // centre (150, 150), full revolution
PDF.ClosePath;
PDF.DrawPathEvenOdd(1); // 1 = fill