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 — فقط پرکردن (قاعدهٔ even-odd). 2 — پرکردن و خط دور |
|---|
مقادیر بازگشتی
| 0 | ناموفق — PathOptions خارج از محدوده است، هیچ سندی باز نیست یا هیچ pathای آغاز نشده است |
|---|---|
| 1 | مسیر با موفقیت ترسیم شد |
ملاحظات
هنگام ساختن شکلهایی مانند دونات، واشر یا هر شکلی که سوراخی در outline بزرگتر ایجاد میکند از قاعدهٔ even-odd استفاده کنید. با قاعدهٔ پیچش غیرصفر که 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