DrawPathEvenOdd
矢量图形、路径定义和绘制
描述
使用奇偶填充规则绘制当前路径,而非 DrawPath 所使用的非零环绕规则。采用奇偶规则时,若从某点发出的射线与路径相交奇数次,该点即被视为位于路径"内部" — 因此重叠子路径会在已填充和未填充区域之间交替,无需考虑子路径方向
语法
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