Sign in Join
Wiki copytemporary

BGRABitmap tutorial 2/fr: what changed

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

OldNewLine
1-[[BGRABitmap tutorial/fr|**Accueil**]] | [[BGRABitmap tutorial 1/fr|**Tutoriel 1**]] | **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**]] | [[BGRABitmap tutorial 7/fr|**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 charger une image et la dessiner sur la fenêtre.
4-
5-## Contents
6-
7- * 1 Création d'un nouveau projet
8- * 2 Chargement de l'image
9- * 3 Dessiner l'image
10- * 4 Code
11- * 5 Exécution du programme
12- * 6 Centrer l'image
13- * 7 Étirer une image
1+Ce tutoriel montre comment charger une image et la dessiner sur la fenêtre.
142
153### Création d'un nouveau projet
164
17-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]].
186
197### Chargement de l'image
208
21-Copiez une image dans le répertoire du projet. Supposons que son nom soit _image.png_.
9+Copiez une image dans le répertoire du projet. Supposons que son nom soit *image.png*.
2210
23-Ajoutez une variable privée à la fenêtre principale pour stocker l'image :
24-```
25-TForm1 = class(TForm)
26- private
27- { private declarations }
28- image: TBGRABitmap;
29- public
30- { public declarations }
31- end;
32-```
11+Ajoutez une variable privée à la fenêtre principale pour stocker l'image :
3312
34-Programmez le chargement de l'image quand la fenêtre est créée. Pour cela, double-cliquez sur la fenêtre. Une procédure devrait apparaître dans l'éditeur de code. Ajoutez-y l'instruction de chargement :
13+``` pascal
14+ TForm1 = class(TForm)
15+ private
16+ { private declarations }
17+ image: TBGRABitmap;
18+ public
19+ { public declarations }
20+ end;
3521```
22+
23+Programmez le chargement de l'image quand la fenêtre est créée. Pour cela, double-cliquez sur la fenêtre. Une procédure devrait apparaître dans l'éditeur de code. Ajoutez-y l'instruction de chargement :
24+
25+``` pascal
3626procedure TForm1.FormCreate(Sender: TObject);
37- begin
38- image := TBGRABitmap.Create('image.png');
39- end;
27+begin
28+ image := TBGRABitmap.Create('image.png');
29+end;
4030```
4131
4232### Dessiner l'image
4333
44-Ajoutez un gestionnaire _OnPaint_. Pour cela, cliquez sur la fenêtre, allez dans l'inspecteur d'objet, dans l'onglet événement et double-cliquez sur la ligne _OnPaint_. Ensuite, ajoutez le code suivant :
45-```
34+Ajoutez un gestionnaire *OnPaint*. Pour cela, cliquez sur la fenêtre, allez dans l'inspecteur d'objet, dans l'onglet événement et double-cliquez sur la ligne *OnPaint*. Ensuite, ajoutez le code suivant :
35+
36+``` pascal
4637procedure TForm1.FormPaint(Sender: TObject);
47- begin
48- image.Draw(Canvas,0,0,True);
49- end;
38+begin
39+ image.Draw(Canvas,0,0,True);
40+end;
5041```
5142
52-Remarquez que le dernier paramètre est à _True_ , ce qui signifie opaque. Si vous voulez prendre en compte les pixels transparents, encodés dans le canal alpha, vous devez mettre _False_ à la place. Mais cela peut être lent de dessiner avec transparence sur un _Canvas_ standard, alors si la transparence n'est pas nécessaire, utilisez le dessin opaque seulement.
43+Remarquez que le dernier paramètre est à *True*, ce qui signifie opaque. Si vous voulez prendre en compte les pixels transparents, encodés dans le canal alpha, vous devez mettre *False* à la place. Mais cela peut être lent de dessiner avec transparence sur un *Canvas* standard, alors si la transparence n'est pas nécessaire, utilisez le dessin opaque seulement.
5344
5445### Code
5546
56-Finalement, vous devriez avoir quelque chose comme cela :
57-```
47+Finalement, vous devriez avoir quelque chose comme cela :
48+
49+``` pascal
5850unit UMain;
59-
60- {$mode objfpc}{$H+}
61-
62- interface
63-
64- uses
65- Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
66- BGRABitmap, BGRABitmapTypes;
67-
68- type
69- { TForm1 }
70-
71- TForm1 = class(TForm)
72- procedure FormCreate(Sender: TObject);
73- procedure FormPaint(Sender: TObject);
74- private
75- { private declarations }
76- image: TBGRABitmap;
77- public
78- { public declarations }
79- end;
80-
81- var
82- Form1: TForm1;
83-
84- implementation
85-
86- { TForm1 }
87-
88- procedure TForm1.FormCreate(Sender: TObject);
89- begin
90- image := TBGRABitmap.Create('image.png');
91- end;
92-
93- procedure TForm1.FormPaint(Sender: TObject);
94- begin
95- image.Draw(Canvas,0,0,True);
96- end;
97-
98- initialization
99- {$I UMain.lrs}
100-
101- end.
51+
52+{$mode objfpc}{$H+}
53+
54+interface
55+
56+uses
57+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
58+ BGRABitmap, BGRABitmapTypes;
59+
60+type
61+ { TForm1 }
62+
63+ TForm1 = class(TForm)
64+ procedure FormCreate(Sender: TObject);
65+ procedure FormPaint(Sender: TObject);
66+ private
67+ { private declarations }
68+ image: TBGRABitmap;
69+ public
70+ { public declarations }
71+ end;
72+
73+var
74+ Form1: TForm1;
75+
76+implementation
77+
78+{ TForm1 }
79+
80+procedure TForm1.FormCreate(Sender: TObject);
81+begin
82+ image := TBGRABitmap.Create('image.png');
83+end;
84+
85+procedure TForm1.FormPaint(Sender: TObject);
86+begin
87+ image.Draw(Canvas,0,0,True);
88+end;
89+
90+initialization
91+ {$I UMain.lrs}
92+
93+end.
10294```
10395
10496### Exécution du programme
10597
106-Vous devriez voir une fenêtre avec une image dessinée dedans au coin supérieur gauche.
98+Vous devriez voir une fenêtre avec une image dessinée dedans au coin supérieur gauche.
10799
108-[![BGRATutorial2.png](/wiki-images/d/db/BGRATutorial2.png)](</File:BGRATutorial2.png>)
100+![](/wiki-images/d/db/BGRATutorial2.png)
109101
110102### Centrer l'image
111103
112-Vous pouvez centrer l'image sur la fenêtre. Pour cela, modifiez la procédure _FormPaint_ :
113-```
104+Vous pouvez centrer l'image sur la fenêtre. Pour cela, modifiez la procédure *FormPaint* :
105+
106+``` pascal
114107procedure TForm1.FormPaint(Sender: TObject);
115- var ImagePos: TPoint;
116- begin
117- ImagePos := Point( (ClientWidth - Image.Width) div 2,
118- (ClientHeight - Image.Height) div 2 );
119-
120- // teste si la position est négative
121- if ImagePos.X < 0 then ImagePos.X := 0;
122- if ImagePos.Y < 0 then ImagePos.Y := 0;
123-
124- image.Draw(Canvas,ImagePos.X,ImagePos.Y,True);
125- end;
108+var ImagePos: TPoint;
109+begin
110+ ImagePos := Point( (ClientWidth - Image.Width) div 2,
111+ (ClientHeight - Image.Height) div 2 );
112+
113+ // teste si la position est négative
114+ if ImagePos.X < 0 then ImagePos.X := 0;
115+ if ImagePos.Y < 0 then ImagePos.Y := 0;
116+
117+ image.Draw(Canvas,ImagePos.X,ImagePos.Y,True);
118+end;
126119```
127120
128-Pour calculer la position, vous avez besoin de déterminer l'espace entre l'image et le bord gauche (coordonnée X) et l'espace entre l'image et le bord haut (coordonnée Y). L'expression _ClientWidth - Image.Width_ renvoie l'espace horizontal disponible, et on divise par 2 pour obtenir la marge gauche.
121+Pour calculer la position, vous avez besoin de déterminer l'espace entre l'image et le bord gauche (coordonnée X) et l'espace entre l'image et le bord haut (coordonnée Y). L'expression *ClientWidth - Image.Width* renvoie l'espace horizontal disponible, et on divise par 2 pour obtenir la marge gauche.
129122
130-Le résultat peut être négatif si l'image est plus grande que la largeur cliente. Dans ce cas, la marge est mise à zéro.
123+Le résultat peut être négatif si l'image est plus grande que la largeur cliente. Dans ce cas, la marge est mise à zéro.
131124
132-Vous pouvez lancer le programme et voir si cela marche. Notez ce qu'il se passe si vous enlevez le test pour la position négative.
125+Vous pouvez lancer le programme et voir si cela marche. Notez ce qu'il se passe si vous enlevez le test pour la position négative.
133126
134127### Étirer une image
135128
136-Pour étirer une image, vous avez besoin de créer une image temporaire étirée :
137-```
129+Pour étirer une image, vous avez besoin de créer une image temporaire étirée :
130+
131+``` pascal
138132procedure TForm1.FormPaint(Sender: TObject);
139- var stretched: TBGRABitmap;
140- begin
141- stretched := image.Resample(ClientWidth, ClientHeight) as TBGRABitmap;
142- stretched.Draw(Canvas,0,0,True);
143- stretched.Free;
144- end;
133+var stretched: TBGRABitmap;
134+begin
135+ stretched := image.Resample(ClientWidth, ClientHeight) as TBGRABitmap;
136+ stretched.Draw(Canvas,0,0,True);
137+ stretched.Free;
138+end;
145139```
146140
147-Par défaut, _Resample_ utilise un joli ré-échantillonnage, mais vous pouvez préciser si vous voulez un ré-échantillonnage simple à la place (plus rapide) :
148-```
141+Par défaut, *Resample* utilise un joli ré-échantillonnage, mais vous pouvez préciser si vous voulez un ré-échantillonnage simple à la place (plus rapide) :
142+
143+``` pascal
149144stretched := image.Resample(ClientWidth, ClientHeight, rmSimpleStretch) as TBGRABitmap;
150145```
151146
152-Vous pouvez choisir le filtre de ré-échantillonage en utilisant la propriété _ResampleFilter_ :
153-```
147+Vous pouvez choisir le filtre de ré-échantillonage en utilisant la propriété *ResampleFilter* :
148+
149+``` pascal
154150image.ResampleFilter := rfMitchell;
155- stretched := image.Resample(ClientWidth, ClientHeight) as TBGRABitmap;
151+stretched := image.Resample(ClientWidth, ClientHeight) as TBGRABitmap;
156152```
157153
158-[[BGRABitmap tutorial 1/fr|Premier tutoriel]] | [[BGRABitmap tutorial 3/fr|Tutoriel suivant (dessiner avec la souris)]]
154+[[BGRABitmap tutorial 1/fr|Premier tutoriel]] \| [[BGRABitmap tutorial 3/fr|Tutoriel suivant (dessiner avec la souris)]]
159155
160156---
161-*From the Free Pascal wiki, page "BGRABitmap tutorial 2/fr", as the Internet Archive kept it on 2023-09-24. 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).*
157+*From the Free Pascal wiki, page "BGRABitmap tutorial 2/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