Sign in Join
Wiki copytemporary

BGRABitmap tutorial 7/fr: what changed

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

OldNewLine
1-[[BGRABitmap tutorial/fr|**Accueil**]] | [[BGRABitmap tutorial 1/fr|**Tutoriel 1**]] | [[BGRABitmap tutorial 2/fr|**Tutoriel 2**]] | [[BGRABitmap tutorial 3/fr|**Tutoriel 3**]] | [[BGRABitmap tutorial 4/fr|**Tutoriel 4**]] | [[BGRABitmap tutorial 5/fr|**Tutoriel 5**]] | [[BGRABitmap tutorial 6/fr|**Tutoriel 6**]] | **Tutoriel 7** | [[BGRABitmap tutorial 8/fr|**Tutoriel 8**]] | [[BGRABitmap tutorial 9/fr|**Tutoriel 9**]] | [[BGRABitmap tutorial 10/fr|**Tutoriel 10**]] | [[BGRABitmap tutorial 11/fr|**Tutoriel 11**]] | [[BGRABitmap tutorial 12/fr|**Tutoriel 12**]] | [Edit](<http://wiki.lazarus.freepascal.org/index.php?title=Template:BGRABitmap_tutorial_index/fr&action=edit>)
2-
3-Ce tutoriel montre comment utiliser les splines et les courbes de Bézier.
4-
5-## Contents
6-
7- * 1 Création d'un nouveau projet
8- * 2 Dessiner une spline ouverte
9- * 3 Dessiner une spline fermée
10- * 4 Exécution du programme
11- * 5 Utiliser les courbes de Bézier
12- * 6 Exécution du programme
1+Ce tutoriel montre comment utiliser les splines et les courbes de Bézier.
132
143### Création d'un nouveau projet
154
16-Créez un nouveau projet et ajoutez la référence à [[BGRABitmap]], de la même façon que dans [[BGRABitmap tutorial/fr|le premier tutoriel]].
5+Créez un nouveau projet et ajoutez la référence à [[BGRABitmap]], de la même façon que dans [[BGRABitmap tutorial/fr|le premier tutoriel]].
176
187### Dessiner une spline ouverte
198
20-Avec l'inspecteur d'objet, ajoutez un gestionnaire _OnPaint_ avec :
21-```
9+Avec l'inspecteur d'objet, ajoutez un gestionnaire *OnPaint* avec :
10+
11+``` pascal
2212procedure TForm1.FormPaint(Sender: TObject);
23- var
24- image: TBGRABitmap;
25- pts: array of TPointF;
26- storedSpline: array of TPointF;
27- c: TBGRAPixel;
28-
29- begin
30- image := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToBGRA(ColorToRGB(clBtnFace)));
31- c := ColorToBGRA(ColorToRGB(clWindowText));
32-
33- //rectangular polyline
34- setlength(pts,4);
35- pts[0] := PointF(50,50);
36- pts[1] := PointF(150,50);
37- pts[2] := PointF(150,150);
38- pts[3] := PointF(50,150);
39- image.DrawPolylineAntialias(pts,BGRA(255,0,0,150),1);
40-
41- //compute spline points and draw as a polyline
42- storedSpline := image.ComputeOpenedSpline(pts);
43- image.DrawPolylineAntialias(storedSpline,c,1);
44-
45- image.Draw(Canvas,0,0,True);
46- image.free;
47- end;
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+ //rectangular polyline
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+ //compute spline points and draw as a polyline
32+ storedSpline := image.ComputeOpenedSpline(pts);
33+ image.DrawPolylineAntialias(storedSpline,c,1);
34+
35+ image.Draw(Canvas,0,0,True);
36+ image.free;
37+end;
4838```
4939
50-Il y a deux lignes qui dessinent la spline. La première calcule les points de la spline et la seconde les dessine. Notez qu'il y a une fonction spécifique pour les splines ouvertes.
40+Il y a deux lignes qui dessinent la spline. La première calcule les points de la spline et la seconde les dessine. Notez qu'il y a une fonction spécifique pour les splines ouvertes.
5141
5242### Dessiner une spline fermée
5343
54-Avant _image.Draw_ , ajoutez ces lignes :
55-```
56-for i := 0 to 3 do
57- pts[i].x += 200;
58- image.DrawPolylineAntialias(pts,BGRA(255,0,0,150),1);
59-
60- storedSpline := image.ComputeClosedSpline(pts);
61- image.DrawPolygonAntialias(storedSpline,c,1);
44+Avant *image.Draw*, ajoutez ces lignes :
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);
6253```
6354
64-Allez avec le curseur texte sur l'identifiant 'i' et appuyez _Ctrl-Shift-C_ pour ajouter la déclaration de la variable. Cette boucle déplace les points vers la droite.
55+Allez avec le curseur texte sur l'identifiant 'i' et appuyez *Ctrl-Shift-C* pour ajouter la déclaration de la variable. Cette boucle déplace les points vers la droite.
6556
66-Les deux nouvelles lignes dessinent une spline fermée. Notez la fonction spécifique pour calculer une spline fermée et l'appel à _DrawPolygonAntialias_.
57+Les deux nouvelles lignes dessinent une spline fermée. Notez la fonction spécifique pour calculer une spline fermée et l'appel à *DrawPolygonAntialias*.
6758
68-Vous pouvez éviter d'utiliser une variable pour stocker les points de la spline comme cela :
69-```
59+Vous pouvez éviter d'utiliser une variable pour stocker les points de la spline comme cela :
60+
61+``` pascal
7062image.DrawPolygonAntialias(image.ComputeClosedSpline(pts),c,1);
7163```
7264
73-Cependant, si vous procédez ainsi, vous ne pouvez pas utiliser les points calculés plus d'une fois : ils devront être recalculés à chaque fois que vous les utiliser.
65+Cependant, si vous procédez ainsi, vous ne pouvez pas utiliser les points calculés plus d'une fois : ils devront être recalculés à chaque fois que vous les utiliser.
7466
7567### Exécution du programme
7668
77-Le programme dessine deux splines : une ouverte à gauche et une fermée à droite.
69+Le programme dessine deux splines : une ouverte à gauche et une fermée à droite.
7870
79-[![BGRATutorial7.png](/wiki-images/8/84/BGRATutorial7.png)](</File:BGRATutorial7.png>)
71+![](/wiki-images/8/84/BGRATutorial7.png)
8072
81-Notez que la spline passe par tous les points. Si vous voulez que la courbe reste à l'intérieur, ou définir des tangentes, vous devez définir des points de contrôle qui sont disponibles avec les courbes de Bézier.
73+Notez que la spline passe par tous les points. Si vous voulez que la courbe reste à l'intérieur, ou définir des tangentes, vous devez définir des points de contrôle qui sont disponibles avec les courbes de Bézier.
8274
8375### Utiliser les courbes de Bézier
8476
85-Avant image.Draw, ajoutez ces lignes :
86-```
87-storedSpline := image.ComputeBezierSpline([BezierCurve(PointF(50,50),PointF(150,50),PointF(150,100)),
88- BezierCurve(PointF(150,100),PointF(150,150),PointF(50,150))]);
89- image.DrawPolylineAntialias(storedSpline,c,2);
77+Avant image.Draw, ajoutez ces lignes :
78+
79+``` pascal
80+ storedSpline := image.ComputeBezierSpline([BezierCurve(PointF(50,50),PointF(150,50),PointF(150,100)),
81+ BezierCurve(PointF(150,100),PointF(150,150),PointF(50,150))]);
82+ image.DrawPolylineAntialias(storedSpline,c,2);
9083```
9184
92-La fonction _BezierCurve_ définit une courbe avec une origine et une destination, et un ou deux points de contrôle. Dans l'exemple, il n'y a qu'un point de contrôle. Les points de contrôles sont définis de telle façon que la courbe soit tangente au rectangle défini précédemment.
85+La fonction *BezierCurve* définit une courbe avec une origine et une destination, et un ou deux points de contrôle. Dans l'exemple, il n'y a qu'un point de contrôle. Les points de contrôles sont définis de telle façon que la courbe soit tangente au rectangle défini précédemment.
9386
94-Une spline Bézier est simplement une suite de courbes de Bézier. Ainsi la fonction _ComputeBezierSpline_ concatène un tableau de courbes de Bézier. Ici, vous construisez un joli demi-tour avec deux courbes.
87+Une spline Bézier est simplement une suite de courbes de Bézier. Ainsi la fonction *ComputeBezierSpline* concatène un tableau de courbes de Bézier. Ici, vous construisez un joli demi-tour avec deux courbes.
9588
9689### Exécution du programme
9790
98-Vous devriez voir une courbe de Bézier en gras à l'intérieur du rectangle gauche.
91+Vous devriez voir une courbe de Bézier en gras à l'intérieur du rectangle gauche.
9992
100-[![BGRATutorial7b.png](/wiki-images/a/aa/BGRATutorial7b.png)](</File:BGRATutorial7b.png>)
93+![](/wiki-images/a/aa/BGRATutorial7b.png)
10194
10295[[BGRABitmap tutorial 6/fr|Tutoriel précédent (styles de lignes)]] [[BGRABitmap tutorial 8/fr|Tutoriel suivant (textures)]]
10396
10497---
105-*From the Free Pascal wiki, page "BGRABitmap tutorial 7/fr", as the Internet Archive kept it on 2025-03-20. 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).*
98+*From the Free Pascal wiki, page "BGRABitmap tutorial 7/fr", 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