Sign in Join
Wiki copytemporary

BGRABitmap tutorial 7/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: BGRABitmap tutorial 7/de

OldNewLine
1+Dieses Tutorial zeigt, wie Sie Splines verwenden können.
2+
3+### Erzeugen Sie ein neues Projekt
4+
5+Erzeugen Sie ein neues Projekt und fügen Sie eine Referenz auf [[BGRABitmap/de|BGRABitmap]] hinzu, genau so wie im [[BGRABitmap tutorial/de|ersten Tutorial]].
6+
7+### Zeichnen Sie ein offenes Spline
8+
9+Im Objektinspektor fügen Sie einen OnPaint-Handler hinzu und schreiben Sie:
10+
11+``` pascal
12+procedure TForm1.FormPaint(Sender: TObject);
13+var
14+ image: TBGRABitmap;
15+ pts: array of TPointF;
16+ storedSpline: array of TPointF;
17+ c: TBGRAPixel;
18+
19+begin
20+ image := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToBGRA(ColorToRGB(clBtnFace)));
21+ c := ColorToBGRA(ColorToRGB(clWindowText));
22+
23+ //rechteckige Polylinie
24+ setlength(pts,4);
25+ pts[0] := PointF(50,50);
26+ pts[1] := PointF(150,50);
27+ pts[2] := PointF(150,150);
28+ pts[3] := PointF(50,150);
29+ image.DrawPolylineAntialias(pts,BGRA(255,0,0,150),1);
30+
31+ //berechnet die Splinepunkte und zeichnet sie als Polylinie
32+ storedSpline := image.ComputeOpenedSpline(pts);
33+ image.DrawPolylineAntialias(storedSpline,c,1);
34+
35+ image.Draw(Canvas,0,0,True);
36+ image.free;
37+end;
38+```
39+
40+Mit zwei Zeilen zeichnen Sie das Spline. Die erste Zeile berechnet die Splinepunkte und die zweite zeichnet sie. Beachte Sie, dass es eine besondere Funktion für offene Splines gibt.
41+
42+### Zeichnen Sie ein geschlossenes Spline
43+
44+Fügen Sie vor 'image.Draw' diese Zeilen ein:
45+
46+``` pascal
47+ for i := 0 to 3 do
48+ pts[i].x += 200;
49+ image.DrawPolylineAntialias(pts,BGRA(255,0,0,150),1);
50+
51+ storedSpline := image.ComputeClosedSpline(pts);
52+ image.DrawPolygonAntialias(storedSpline,c,1);
53+```
54+
55+Gehen Sie mit dem Textcursor auf den Bezeichner 'i' und drücken Sie Strg-Umsch-C, um die Variablendeklaration hinzuzufügen. Die Schleife durchläuft die Punkte der rechten Hälfte.
56+
57+Zwei neue Zeilen zeichnen ein geschlossenes Spline. Beachten Sie die besondere Funktion zum Berechnen geschlossener Splines und den Aufruf von 'DrawPolygonAntialias'.
58+
59+So vermeiden Sie, dass zum Speichern der Splinepunkte eine Variable benutzt wird:
60+
61+``` pascal
62+image.DrawPolygonAntialias(image.ComputeClosedSpline(pts),c,1);
63+```
64+
65+Allerdings können Sie dadurch die berechneten Punkte nicht mehrfach verwenden. Sie müssen bei jedem Einsatz neu berechnet werden.
66+
67+### Starten Sie das Programm
68+
69+Dies zeichnet zwei Splines, links ein offenes und rechts ein geschlossenes.
70+
71+<figure>
72+<img src="BGRATutorial7.png" title="BGRATutorial7.png" />
73+<figcaption>BGRATutorial7.png</figcaption>
74+</figure>
75+
76+Beachten Sie, dass das Spline durch jeden Punkt geht. Wenn Sie wollen, dass die Kurve innen bleibt oder wenn Sie Tangenten definieren, dann brauchen Sie Kontrollpunkte. Diese stehen Ihnen bei Bézierkurven zur Verfügung.
77+
78+### Verwendung von Bézierkurven
79+
80+Fügen Sie vor 'image.Draw' diese Zeilen ein:
81+
82+``` pascal
83+ storedSpline := image.ComputeBezierSpline([BezierCurve(PointF(50,50),PointF(150,50),PointF(150,100)),
84+ BezierCurve(PointF(150,100),PointF(150,150),PointF(50,150))]);
85+ image.DrawPolylineAntialias(storedSpline,c,2);
86+```
87+
88+Die Funktion 'BezierCurve' definiert eine Kurve mit einem Anfangs- und einem Endpunkt und ein bis zwei Kontrollpunkten. Hier im Beispiel ist es nur ein Kontrollpunkt. Die Kontrollpunkte sind so definiert, dass die Kurve das vorher festgelegte Rechteck berührt.
89+
90+Ein Bézierspline ist einfach eine Folge von Bézierkurven. Deshalb hängt die Funktion 'ComputeBezierSpline' ein Array von Bézierkurven aneinander. Hier konstruieren wir eine nette U-Form mittels zweier Kurven.
91+
92+### Starten Sie das Programm
93+
94+Sie sehen eine fette Bézierkurve innerhalb des linken Rechtecks.
95+
96+<figure>
97+<img src="BGRATutorial7b.png" title="BGRATutorial7b.png" />
98+<figcaption>BGRATutorial7b.png</figcaption>
99+</figure>
100+
101+[[BGRABitmap tutorial 6/de|Voriges Tutorial (Linienarten)]] \| [[BGRABitmap tutorial 8/de|Nächstes Tutorial (Texturen)]]
102+
103+---
104+*From the Free Pascal wiki, page "BGRABitmap tutorial 7/de", as it stood on 2020-02-10 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history