DrawPathEvenOdd
Векторная графика, определение и рисование контуров
Описание
Рисует текущий контур по правилу заливки even-odd вместо правила non-zero winding, которое использует DrawPath. По правилу even-odd точка считается "внутри" контура, когда проведённый из неё луч пересекает контур нечётное число раз — перекрывающиеся подпути поэтому чередуются между закрашенными и незакрашенными полосами, не требуя учёта направления подпути.
Синтаксис
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 | Failed — PathOptions is out of range, no document is open, or no path has been started. |
|---|---|
| 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