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