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 είναι εκτός εύρους, δεν υπάρχει ανοιχτό έγγραφο ή δεν έχει ξεκινήσει καμία διαδρομή |
|---|---|
| 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