Sign in Join
Wiki copytemporary

BGRABitmap tutorial 2/fr: what changed

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

OldNewLine
1-Ce tutoriel montre comment charger une image et la dessiner sur la fenêtre.
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>)
22
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
14+
315### Création d'un nouveau projet
416
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]].
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]].
618
719### Chargement de l'image
820
9-Copiez une image dans le répertoire du projet. Supposons que son nom soit *image.png*.
10-
11-Ajoutez une variable privée à la fenêtre principale pour stocker l'image :
21+Copiez une image dans le répertoire du projet. Supposons que son nom soit _image.png_.
1222
13-``` pascal
14- TForm1 = class(TForm)
15- private
16- { private declarations }
17- image: TBGRABitmap;
18- public
19- { public declarations }
20- end;
23+Ajoutez une variable privée à la fenêtre principale pour stocker l'image :
2124```
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 :
25+TForm1 = class(TForm)
26+ private
27+ { private declarations }
28+ image: TBGRABitmap;
29+ public
30+ { public declarations }
31+ end;
32+```
2433
25-``` pascal
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 :
35+```
2636procedure TForm1.FormCreate(Sender: TObject);
27-begin
28- image := TBGRABitmap.Create('image.png');
29-end;
37+ begin
38+ image := TBGRABitmap.Create('image.png');
39+ end;
3040```
3141
3242### Dessiner l'image
3343
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
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+```
3746procedure TForm1.FormPaint(Sender: TObject);
38-begin
39- image.Draw(Canvas,0,0,True);
40-end;
47+ begin
48+ image.Draw(Canvas,0,0,True);
49+ end;
4150```
4251
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.
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.
4453
4554### Code
4655
47-Finalement, vous devriez avoir quelque chose comme cela :
48-
49-``` pascal
56+Finalement, vous devriez avoir quelque chose comme cela :
57+```
5058unit UMain;
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.
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.
94102```
95103
96104### Exécution du programme
97105
98-Vous devriez voir une fenêtre avec une image dessinée dedans au coin supérieur gauche.
106+Vous devriez voir une fenêtre avec une image dessinée dedans au coin supérieur gauche.
99107
100-<figure>
101-<img src="BGRATutorial2.png" title="BGRATutorial2.png" />
102-<figcaption>BGRATutorial2.png</figcaption>
103-</figure>
108+[![BGRATutorial2.png](/wiki-images/d/db/BGRATutorial2.png)](</File:BGRATutorial2.png>)
104109
105110### Centrer l'image
106111
107-Vous pouvez centrer l'image sur la fenêtre. Pour cela, modifiez la procédure *FormPaint* :
108-
109-``` pascal
112+Vous pouvez centrer l'image sur la fenêtre. Pour cela, modifiez la procédure _FormPaint_ :
113+```
110114procedure TForm1.FormPaint(Sender: TObject);
111-var ImagePos: TPoint;
112-begin
113- ImagePos := Point( (ClientWidth - Image.Width) div 2,
114- (ClientHeight - Image.Height) div 2 );
115-
116- // teste si la position est négative
117- if ImagePos.X < 0 then ImagePos.X := 0;
118- if ImagePos.Y < 0 then ImagePos.Y := 0;
119-
120- image.Draw(Canvas,ImagePos.X,ImagePos.Y,True);
121-end;
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;
122126```
123127
124-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.
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.
125129
126-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.
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.
127131
128-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.
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.
129133
130134### Étirer une image
131135
132-Pour étirer une image, vous avez besoin de créer une image temporaire étirée :
133-
134-``` pascal
136+Pour étirer une image, vous avez besoin de créer une image temporaire étirée :
137+```
135138procedure TForm1.FormPaint(Sender: TObject);
136-var stretched: TBGRABitmap;
137-begin
138- stretched := image.Resample(ClientWidth, ClientHeight) as TBGRABitmap;
139- stretched.Draw(Canvas,0,0,True);
140- stretched.Free;
141-end;
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;
142145```
143146
144-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) :
145-
146-``` pascal
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+```
147149stretched := image.Resample(ClientWidth, ClientHeight, rmSimpleStretch) as TBGRABitmap;
148150```
149151
150-Vous pouvez choisir le filtre de ré-échantillonage en utilisant la propriété *ResampleFilter* :
151-
152-``` pascal
152+Vous pouvez choisir le filtre de ré-échantillonage en utilisant la propriété _ResampleFilter_ :
153+```
153154image.ResampleFilter := rfMitchell;
154-stretched := image.Resample(ClientWidth, ClientHeight) as TBGRABitmap;
155+ stretched := image.Resample(ClientWidth, ClientHeight) as TBGRABitmap;
155156```
156157
157-[[BGRABitmap tutorial 1/fr|Premier tutoriel]] \| [[BGRABitmap tutorial 3/fr|Tutoriel suivant (dessiner avec la souris)]]
158+[[BGRABitmap tutorial 1/fr|Premier tutoriel]] | [[BGRABitmap tutorial 3/fr|Tutoriel suivant (dessiner avec la souris)]]
158159
159160---
160-*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).*
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).*

Back to history