DrawPathEvenOdd
גרפיקה וקטורית, הגדרת נתיבים וציור
תיאור
מצייר את הנתיב הנוכחי בשימוש בכלל המילוי even-odd במקום כלל ה-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 — מילוי בלבד (כלל even-odd). 2 — מילוי ומתאר. |
|---|
ערכי החזרה
| 0 | נכשל — PathOptions מחוץ לטווח, אין מסמך פתוח או שלא התחיל נתיב |
|---|---|
| 1 | הנתיב צויר בהצלחה |
הערות
השתמשו בכלל even-odd בעת בניית צורות כמו דונאטים, רינגים או כל צורה שמנקבת חור דרך מתאר גדול יותר. עם כלל ה-winding השונה-מאפס שבו משתמש DrawPath אותה בנייה עובדת רק אם תת-הנתיב הפנימי מצויר בכיוון ההפוך; עם כלל ה-even-odd הכיוון אינו משנה.
דוגמה
// 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