DrawPathEvenOdd
Vector graphics, Path definition and drawing
Description
يقوم بتلوين المسار الحالي باستخدام قاعدة تعبئة even-odd بدلاً من قاعدة الالتفاف غير الصفرية المستخدمة بواسطة DrawPath؛ باستخدام قاعدة even-odd، تعتبر النقطة "داخل" المسار عندما يقطع شعاع مرسوم منها المسار عددًا فرديًا من المرات — وبالتالي تتناوب المسارات الفرعية المتداخلة بين النطاقات المعبأة وغير المعبأة دون الحاجة إلى مراعاة اتجاه المسار الفرعي
Syntax
Delphi
Function TPDFlib.DrawPathEvenOdd(PathOptions: Integer): Integer;
ActiveX
Function PDFlib::DrawPathEvenOdd(PathOptions As Long) As Long
DLL
int DLDrawPathEvenOdd(int InstanceID, int PathOptions);
Parameters
| PathOptions | وضع التلوين: 0 — المخطط التفصيلي فقط 1 — التعبئة فقط (قاعدة الزوجي والفردي) 2 — التعبئة والمخطط التفصيلي |
|---|
Return values
| 0 | فشل — PathOptions خارج النطاق، أو لا يوجد مستند مفتوح، أو لم يتم بدء أي مسار |
|---|---|
| 1 | تم رسم المسار بنجاح |
Remarks
استخدم قاعدة الزوجي والفردي (even-odd) عند بناء أشكال مثل الحلقات الدائرية أو الحلقات المعدنية أو أي شكل يثقب ثقبًا في مخطط تفصيلي أكبر؛ ومع قاعدة اللف غير الصفرية (non-zero winding) المستخدمة بواسطة DrawPath، يعمل نفس البناء فقط إذا تم رسم المسار الفرعي الداخلي في الاتجاه المعاكس؛ ومع قاعدة الزوجي والفردي، لا يهم الاتجاه
Example
// 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