Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Workshops / PDF / Bezier

Bezierkurven und beliebige Formen

Bezierkurven

Einführung

Diagramm zur Bezierkurve

Das PDF-Format bietet auch die Möglichkeit, sogenannte "kubische Bezierkurven" zu zeichnen.

Dazu werden vier Punkte P1 bis P4 vorgegeben, welche die Form einer Kurve beschreiben:
Während P1 und P4 den Start- und Endpunkt der Kurve festlegen, gibt P2 an, in welche Richtung und mit welcher Stärke die Kurve von P1 aus "gezogen" wird (wie ein Gummiband, manche sagen auch "magnetisch" Grins); analoges gilt auch für P3 ("zieht" an P4).

In der Grafik rechts sind die "Zugleinen" blau eingezeichnet; es ergibt sich der rot eingezeichnete Kurvenverlauf.

Kreise aus Bezierkurven

Mit kubischen Bezierkurven ist es auch möglich, (im Rahmen der Darstellungsgenauigkeit) exakte "Kreise" zu zeichnen. Dazu wird der Kreis einfach aus 4 Kreisvierteln zusammengesetzt.

Da P1 und P4 jeweils bekannt sind - sie liegen schließlich genau auf dem Kreis (mir Radius r) und stehen senkrecht zueinander auf dem Mittelpunkt x,y - muss nur noch P2 und P3 bestimmt werden. Da die "Zugleinen" Tangenten auf dem Kreis sein müssen (damit die Kreisviertel auch bündig ineinander übergehen) muss "nur noch" die Länge der "Zugleinen" in Relation zum Radius r bestimmt werden (im Diagramm Faktor c).

Setzt man nun das zur Berechnung/Darstellung von Bezierkurven verwendete "Bernsteinpolynom" mit der zur Berechnung/Darstellung von Kreisen verwendeten Formel zur Polartransformation gleich, so ergibt sich (nach Wegfall der Koordinaten x,y sowie Kürzen des Radius' r) folgende Formel:
c = 4/3 (Sqr 2 - 1) = 0,55228474983...

Aber keine Angst, die hier vorgestellte Klasse clsPDF berücksichtigt dies alles in der DrawCircle-Methode automatisch... Grins

Beliebige Formen zeichnen

Shapes

Die soeben erwähnten Bezierkurven können (zusammen mit einfachen Linien) dazu verwendet werden, beliebige Formen (engl. "Shapes") in ein PDF-Dokument zu zeichnen.

Die Definition einer Form beginnt mit einem MoveTo, welcher den Startpunkt des Umrisses angibt. Es folgen beliebig viele DrawLineTo- und DrawCurveTo-Anweisungen; dadurch wird gewährleistet, dass die Form einen durchgehende Umrisslinie erhält. Beendet wird die Formdefinition mit der DrawShape-Methode, welcher man auch einen passenden Füllmodus mitgeben kann (vgl. clsPDF-Dokumentation).

Beispiel

Folgendes Code-Fragment zeichnet einen "geschwungenen Haken":

With pdf
  .MoveTo 200, 380
  .DrawLineTo 250, 430
  .DrawLineTo 300, 380
  .DrawCurveTo 280, 430, 180, 580, 200, 380
  .DrawShape pdfFillStroke
End With

...>>

© Jost Schwider, 24.04.2005-24.04.2005 - http://vb-tec.de/pdf-bezier.htm