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

另请参阅

DrawPath、StartPath、AddArcToPath、ClosePath