Sign in Join
Wiki copytemporary

BGRABitmap tutorial Font rendering/fr: what changed

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

OldNewLine
1-Des fonctions de texte de base sont disponibles avec les objets _TBGRABitmap_. Vous trouverez des explications à ce sujet dans le [[BGRABitmap tutorial 12/fr|tutoriel 12]].
2-
3-Voyons les façons avancées de dessiner du texte.
4-
5-## Contents
1+Des fonctions de texte de base sont disponibles avec les objets *TBGRABitmap*. Vous trouverez des explications à ce sujet dans le [[BGRABitmap tutorial 12/fr|tutoriel 12]].
62
7- * 1 La propriété FontRenderer
8- * 1.1 Ajouter des effets
9- * 1.1.1 Utiliser un éclairage de Phong
10- * 1.2 Utiliser les polices avec LazFreeType intégré à Lazarus
11- * 1.2.1 Éclairage de Phong
3+Voyons les façons avancées de dessiner du texte.
124
135### La propriété FontRenderer
146
15-Les images _TBGRABitmap_ ont une propriété _FontRenderer_. Par défaut, le moteur de rendu utilisant le dessin de la LCL est utilisé, éventuellement en dessinant le texte plus gros et en appliquant un anticrénelage. Cela est réalisé par la classe _TLCLFontRenderer_ de l'unité _BGRAText_. Cependant, ce mode de dessin ne permet pas de faire des ombrage ou de dessiner un contour au texte. De plus, il est un peu lent pour dessiner du texte dans un rectangle (fonction _TextRect_).
7+Les images *TBGRABitmap* ont une propriété *FontRenderer*. Par défaut, le moteur de rendu utilisant le dessin de la LCL est utilisé, éventuellement en dessinant le texte plus gros et en appliquant un anticrénelage. Cela est réalisé par la classe *TLCLFontRenderer* de l'unité *BGRAText*. Cependant, ce mode de dessin ne permet pas de faire des ombrage ou de dessiner un contour au texte. De plus, il est un peu lent pour dessiner du texte dans un rectangle (fonction *TextRect*).
168
17-Vous pouvez remplacer le moteur de rendu en créant un objet dérivé de la classe _TBGRACustomFontRenderer_ et en l'affectant à la propriété _FontRenderer_. Notez qu'une instance ne peut être utilisée que pour un seul objet, qui en devient le propriétaire. Vous n'avez alors pas à libérer vous-même le moteur de rendu.
9+Vous pouvez remplacer le moteur de rendu en créant un objet dérivé de la classe *TBGRACustomFontRenderer* et en l'affectant à la propriété *FontRenderer*. Notez qu'une instance ne peut être utilisée que pour un seul objet, qui en devient le propriétaire. Vous n'avez alors pas à libérer vous-même le moteur de rendu.
1810
1911#### Ajouter des effets
2012
21-Pour améliorer la vitesse du rendu et ajouter des effets, vous aurez besoin de la classe _TBGRATextEffectFontRenderer_ qui se trouve dans l'unité _BGRATextFX_. Pour cela, écrivez simplement ceci :
22-```
13+Pour améliorer la vitesse du rendu et ajouter des effets, vous aurez besoin de la classe *TBGRATextEffectFontRenderer* qui se trouve dans l'unité *BGRATextFX*. Pour cela, écrivez simplement ceci :
14+
15+``` pascal
2316Uses BGRABitmap, BGRATextFX;
24-
25- var Bitmap: TBGRABitmap;
26- Renderer: TBGRATextEffectFontRenderer;
27-
28- begin
29- ...
30- Renderer := TBGRATextEffectFontRenderer.Create;
31- Bitmap.FontRenderer := Renderer;
17+
18+var Bitmap: TBGRABitmap;
19+ Renderer: TBGRATextEffectFontRenderer;
20+
21+begin
22+ ...
23+ Renderer := TBGRATextEffectFontRenderer.Create;
24+ Bitmap.FontRenderer := Renderer;
3225```
3326
34-Notez que vous pourriez affecter directement l'objet créé sans passer par la variable _Renderer_ , mais cette dernière va vous permettre de choisir les effets appliqués.
27+Notez que vous pourriez affecter directement l'objet créé sans passer par la variable *Renderer*, mais cette dernière va vous permettre de choisir les effets appliqués.
3528
36- * Pour l'ombrage, utilisez les propriétés _ShadowVisible_ , _ShadowColor_ , _ShadowOffset_ et _ShadowRadius_. Pour qu'une ombre soit visible, il faut que _ShadowVisible_ soit à _True_ et que _ShadowColor_ ne soit pas transparent.
37- * Pour ajouter un contour, utilisez _OutlineVisible_ , _OuterOutlineOnly_ , _OutlineColor_ ou _OutlineTexture_ et _OutlineWidth_. Pour qu'un contour soit visible, il faut que _OutlineVisible_ soit à _True_ , et qu'une texture soit définie ou sinon une couleur non transparente. De plus, _OutlineWidth_ ne doit pas être égal à zéro.
29+- Pour l'ombrage, utilisez les propriétés *ShadowVisible*, *ShadowColor*, *ShadowOffset* et *ShadowRadius*. Pour qu'une ombre soit visible, il faut que *ShadowVisible* soit à *True* et que *ShadowColor* ne soit pas transparent.
30+- Pour ajouter un contour, utilisez *OutlineVisible*, *OuterOutlineOnly*, *OutlineColor* ou *OutlineTexture* et *OutlineWidth*. Pour qu'un contour soit visible, il faut que *OutlineVisible* soit à *True*, et qu'une texture soit définie ou sinon une couleur non transparente. De plus, *OutlineWidth* ne doit pas être égal à zéro.
3831
39-Par exemple, définissez l'événement _OnPaint_ en double-cliquant dans l'inspecteur d'objet d'une fenêtre et écrivez :
40-```
32+Par exemple, définissez l'événement *OnPaint* en double-cliquant dans l'inspecteur d'objet d'une fenêtre et écrivez :
33+
34+``` pascal
4135Uses BGRABitmap, BGRABitmapTypes, BGRATextFX;
42-
43- procedure TForm1.FormPaint(Sender: TObject);
44- var
45- bmp: TBGRABitmap;
46- renderer: TBGRATextEffectFontRenderer;
47- begin
48- bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToRGB(clBtnFace));
49- renderer := TBGRATextEffectFontRenderer.Create;
50- bmp.FontRenderer := renderer;
51- renderer.ShadowVisible := True;
52- renderer.OutlineVisible := True;
53- renderer.OutlineColor := BGRABlack;
54- renderer.OuterOutlineOnly := True;
55- bmp.FontFullHeight := 50;
56- bmp.TextOut(5,5,'Hello world',CSSRed);
57- bmp.Draw(Canvas,0,0);
58- bmp.Free;
59- end;
36+
37+procedure TForm1.FormPaint(Sender: TObject);
38+var
39+ bmp: TBGRABitmap;
40+ renderer: TBGRATextEffectFontRenderer;
41+begin
42+ bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToRGB(clBtnFace));
43+ renderer := TBGRATextEffectFontRenderer.Create;
44+ bmp.FontRenderer := renderer;
45+ renderer.ShadowVisible := True;
46+ renderer.OutlineVisible := True;
47+ renderer.OutlineColor := BGRABlack;
48+ renderer.OuterOutlineOnly := True;
49+ bmp.FontFullHeight := 50;
50+ bmp.TextOut(5,5,'Hello world',CSSRed);
51+ bmp.Draw(Canvas,0,0);
52+ bmp.Free;
53+end;
6054```
6155
62-[![bgratexteffectfontrendering.png](/wiki-images/f/fa/bgratexteffectfontrendering.png)](</File:bgratexteffectfontrendering.png>)
56+![](/wiki-images/6/68/Bgratexteffectfontrendering.png)
6357
64-Notez que l'anticrénelage n'est pas activé. Vous pouvez le faire avec :
65-```
66-bmp.FontQuality:= fqFineAntialiasing;
58+Notez que l'anticrénelage n'est pas activé. Vous pouvez le faire avec :
59+
60+``` pascal
61+ bmp.FontQuality:= fqFineAntialiasing;
6762```
6863
69-[![bgratexteffectfontrendering aa.png](/wiki-images/3/3d/bgratexteffectfontrendering_aa.png)](</File:bgratexteffectfontrendering_aa.png>)
64+![](/wiki-images/9/90/Bgratexteffectfontrendering_aa.png)
7065
7166##### Utiliser un éclairage de Phong
7267
73-Pour avoir un éclairage de Phong, vous aurez besoin d'un _shader_. Pour le créer :
74-```
68+Pour avoir un éclairage de Phong, vous aurez besoin d'un *shader*. Pour le créer :
69+
70+``` pascal
7571uses BGRAGradients;
76- var
77- shader: TPhongShading;
78- renderer: TBGRATextEffectFontRenderer;
79- begin
80- shader := TPhongShading.Create;
81- renderer := TBGRATextEffectFontRenderer.Create(shader, True); //le deuxième paramètre indique que le shader appartient au moteur de rendu
72+var
73+ shader: TPhongShading;
74+ renderer: TBGRATextEffectFontRenderer;
75+begin
76+ shader := TPhongShading.Create;
77+ renderer := TBGRATextEffectFontRenderer.Create(shader, True); //le deuxième paramètre indique que le shader appartient au moteur de rendu
8278```
8379
84-L'exemple au complet, en utilisant un ombrage, devient :
85-```
80+L'exemple au complet, en utilisant un ombrage, devient :
81+
82+``` pascal
8683uses BGRABitmap, BGRABitmapTypes, BGRATextFX, BGRAGradients;
87-
88- procedure TForm1.FormPaint(Sender: TObject);
89- var bmp: TBGRABitmap;
90- shader: TPhongShading;
91- renderer: TBGRATextEffectFontRenderer;
92- begin
93- bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToRGB(clBtnFace));
94- shader := TPhongShading.Create;
95- renderer := TBGRATextEffectFontRenderer.Create(shader,True);
96- bmp.FontRenderer := renderer;
97- renderer.ShadowVisible := True;
98- bmp.FontFullHeight := 50;
99- bmp.FontQuality:= fqFineAntialiasing;
100- bmp.TextOut(5,5,'Hello world',CSSRed);
84+
85+procedure TForm1.FormPaint(Sender: TObject);
86+var bmp: TBGRABitmap;
87+ shader: TPhongShading;
88+ renderer: TBGRATextEffectFontRenderer;
89+begin
90+ bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToRGB(clBtnFace));
91+ shader := TPhongShading.Create;
92+ renderer := TBGRATextEffectFontRenderer.Create(shader,True);
93+ bmp.FontRenderer := renderer;
94+ renderer.ShadowVisible := True;
95+ bmp.FontFullHeight := 50;
96+ bmp.FontQuality:= fqFineAntialiasing;
97+ bmp.TextOut(5,5,'Hello world',CSSRed);
10198```
10299
103-[![bgratexteffectfontrendering shader.png](/wiki-images/2/2c/bgratexteffectfontrendering_shader.png)](</File:bgratexteffectfontrendering_shader.png>)
100+![](/wiki-images/1/1e/Bgratexteffectfontrendering_shader.png)
104101
105102#### Utiliser les polices avec LazFreeType intégré à Lazarus
106103
107-Depuis la version 1.0 de Lazarus, un moteur de police FreeType est intégré à Lazarus. Notez que vous devez fournir vous-même les fichiers ou les flux contenant les polices que vous voulez afficher. Les répertoires du système et les polices installées sont ignorés, à moins bien entendu que vous ajoutiez explicitement ces fichiers. Notez que dans l'implémentation actuelle, il est nécessaire de fournir la police Arial même si vous ne l'utilisez pas.
104+Depuis la version 1.0 de Lazarus, un moteur de police FreeType est intégré à Lazarus. Notez que vous devez fournir vous-même les fichiers ou les flux contenant les polices que vous voulez afficher. Les répertoires du système et les polices installées sont ignorés, à moins bien entendu que vous ajoutiez explicitement ces fichiers. Notez que dans l'implémentation actuelle, il est nécessaire de fournir la police Arial même si vous ne l'utilisez pas.
108105
109-Afin de définir les polices, écrivez ceci lors de la création de votre application :
110-```
106+Afin de définir les polices, écrivez ceci lors de la création de votre application :
107+
108+``` pascal
111109uses LazFreeTypeFontCollection;
112-
113- var FFontCollection: TFreeTypeFontCollection;
114-
115- procedure TForm1.FormCreate(Sender: TObject);
116- begin
117- FFontCollection := TFreeTypeFontCollection.Create;
118- FFontCollection.AddFile('Arial.ttf'); //en supposant que le fichier se trouve à coté de l'application
119- SetDefaultFreeTypeFontCollection(FFontCollection);
120- end;
121-
122- procedure TForm1.FormDestroy(Sender: TObject);
123- begin
124- SetDefaultFreeTypeFontCollection(nil);
125- FreeAndNil(FFontCollection);
126- end;
127-```
128110
129-À présent, pour utiliser ces polices, définissez la propriété _FontRenderer_ :
111+var FFontCollection: TFreeTypeFontCollection;
112+
113+procedure TForm1.FormCreate(Sender: TObject);
114+begin
115+ FFontCollection := TFreeTypeFontCollection.Create;
116+ FFontCollection.AddFile('Arial.ttf'); //en supposant que le fichier se trouve à coté de l'application
117+ SetDefaultFreeTypeFontCollection(FFontCollection);
118+end;
119+
120+procedure TForm1.FormDestroy(Sender: TObject);
121+begin
122+ SetDefaultFreeTypeFontCollection(nil);
123+ FreeAndNil(FFontCollection);
124+end;
130125```
126+
127+À présent, pour utiliser ces polices, définissez la propriété *FontRenderer* :
128+
129+``` pascal
131130uses BGRABitmap, BGRABitmapTypes, BGRAFreeType;
132-
133- procedure TForm1.FormPaint(Sender: TObject);
134- var
135- bmp: TBGRABitmap;
136- renderer: TBGRAFreeTypeFontRenderer;
137- begin
138- bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToRGB(clBtnFace));
139- renderer := TBGRAFreeTypeFontRenderer.Create;
140- bmp.FontRenderer := renderer;
141- bmp.FontName := 'Arial';
142- bmp.FontFullHeight:= 50;
143- bmp.FontQuality := fqFineClearTypeRGB;
144- bmp.TextOut(10,10,'Hello world',BGRABlack);
145- bmp.Draw(Canvas,0,0);
146- bmp.Free;
147- end;
131+
132+procedure TForm1.FormPaint(Sender: TObject);
133+var
134+ bmp: TBGRABitmap;
135+ renderer: TBGRAFreeTypeFontRenderer;
136+begin
137+ bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToRGB(clBtnFace));
138+ renderer := TBGRAFreeTypeFontRenderer.Create;
139+ bmp.FontRenderer := renderer;
140+ bmp.FontName := 'Arial';
141+ bmp.FontFullHeight:= 50;
142+ bmp.FontQuality := fqFineClearTypeRGB;
143+ bmp.TextOut(10,10,'Hello world',BGRABlack);
144+ bmp.Draw(Canvas,0,0);
145+ bmp.Free;
146+end;
148147```
149148
150-[![bgrafreetyperenderer.png](/wiki-images/5/54/bgrafreetyperenderer.png)](</File:bgrafreetyperenderer.png>)
149+![](/wiki-images/d/d8/Bgrafreetyperenderer.png)
151150
152-Vous pouvez ajouter une ombre avec la propriété _Shadow_ :
153-```
154-renderer.ShadowVisible := True;
151+Vous pouvez ajouter une ombre avec la propriété *Shadow* :
152+
153+``` pascal
154+ renderer.ShadowVisible := True;
155155```
156156
157-[![bgrafreetyperenderer shadow.png](/wiki-images/7/70/bgrafreetyperenderer_shadow.png)](</File:bgrafreetyperenderer_shadow.png>)
157+![](/wiki-images/a/a6/Bgrafreetyperenderer_shadow.png)
158158
159-Pour ajouter un contour :
160-```
161-renderer.OutlineVisible := True;
162- renderer.OutlineColor := CSSBlack;
163- renderer.OuterOutlineOnly := True;
159+Pour ajouter un contour :
160+
161+``` pascal
162+ renderer.OutlineVisible := True;
163+ renderer.OutlineColor := CSSBlack;
164+ renderer.OuterOutlineOnly := True;
164165```
165166
166-[![bgrafreetyperenderer outline.png](/wiki-images/4/44/bgrafreetyperenderer_outline.png)](</File:bgrafreetyperenderer_outline.png>)
167+![](/wiki-images/0/0f/Bgrafreetyperenderer_outline.png)
167168
168169##### Éclairage de Phong
169170
170-Pour avoir un éclairage de Phong, vous aurez besoin d'un _shader_. Pour le créer :
171-```
171+Pour avoir un éclairage de Phong, vous aurez besoin d'un *shader*. Pour le créer :
172+
173+``` pascal
172174uses BGRAGradients;
173- var
174- shader: TPhongShading;
175- renderer: TBGRAFreeTypeFontRenderer;
176- begin
177- shader := TPhongShading.Create;
178- renderer := TBGRAFreeTypeFontRenderer.Create(shader, True); //le deuxième paramètre indique que le shader appartient au moteur de rendu
175+var
176+ shader: TPhongShading;
177+ renderer: TBGRAFreeTypeFontRenderer;
178+begin
179+ shader := TPhongShading.Create;
180+ renderer := TBGRAFreeTypeFontRenderer.Create(shader, True); //le deuxième paramètre indique que le shader appartient au moteur de rendu
179181```
180182
181-[![bgrafreetyperenderer shader.png](/wiki-images/9/91/bgrafreetyperenderer_shader.png)](</File:bgrafreetyperenderer_shader.png>)
183+![](/wiki-images/0/0d/Bgrafreetyperenderer_shader.png)
182184
183185---
184-*From the Free Pascal wiki, page "BGRABitmap tutorial Font rendering/fr", as the Internet Archive kept it on 2023-03-30. 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).*
186+*From the Free Pascal wiki, page "BGRABitmap tutorial Font rendering/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).*
187+Category: Français

Back to history