BGRABitmap tutorial Font rendering/fr

From Lazarus wiki
Revision as of 22:06, 9 February 2013 by Circular (talk | contribs) (créée)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Des fonctions de texte de base sont disponibles avec les objets TBGRABitmap. Vous trouverez des explications à ce sujet dans le tutoriel 12.

Voyons les façons avancées de dessiner du texte.

La propriété FontRenderer

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 antialiasing. 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).

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.

Ajouter des effets

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 :

Uses BGRATextFX;

var Bitmap: TBGRABitmap;
    Renderer: TBGRATextEffectFontRenderer;

begin
  ...
  Renderer := TBGRATextEffectFontRenderer.Create;
  Bitmap.FontRenderer := Renderer;
</syntaxhighlght>

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.

* Pour l'ombrage, utilisez les propriétés ShadowVisible, ShadowColor, ShadowOffset et ShadowRadius. Pour qu'un ombre soit visible, il faut que ShadowVisible soit à vrai et que ShadowColor ne soit pas transparent.
* Pour ajouter un contour, utilisez OutlineVisible, OuterOutlineOnly, OutlineColor ou OutlineTexture et OutlineWidth. Pour qu'un contour soit visible, il faut que OutlineVisible soit à vrai, et qu'une texture soit définie ou sinon une couleur non transparente. De plus OutlineWidth ne doit pas être égal à zéro.

Par exemple, définissez l'événement OnPaint en double-cliquant dans l'inspector d'objet d'une fenêtre et écrivez :
<syntaxhighlight>procedure TForm1.FormPaint(Sender: TObject);
var bmp: TBGRABitmap;
  renderer: TBGRATextEffectFontRenderer;
begin
  bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToRGB(clBtnFace));
  renderer := TBGRATextEffectFontRenderer.Create;
  bmp.FontRenderer := renderer;
  renderer.ShadowVisible := True;
  renderer.OutlineVisible := True;
  renderer.OutlineColor := BGRABlack;
  renderer.OuterOutlineOnly := True;
  bmp.FontFullHeight := 50;
  bmp.TextOut(5,5,'Hello world',CSSRed);
  bmp.Draw(Canvas,0,0);
  bmp.Free;
end;

Notez que l'antialiasing n'est pas activé.