vivelesquads
Messages postés23Date d'inscriptionsamedi 1 janvier 2005StatutMembreDernière intervention11 juillet 2008
-
30 mai 2006 à 11:24
vivelesquads
Messages postés23Date d'inscriptionsamedi 1 janvier 2005StatutMembreDernière intervention11 juillet 2008
-
30 mai 2006 à 13:44
Bonjour,
J'aimerai pouvoir calculer la largeur d'un texte en italic. TextWidth ne convient pas car il donne le meme résultat que le texte soit en italic ou non.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 30 mai 2006 à 11:52
Salut,
Essaye comme ceci
procedure TForm1.Button1Click(Sender: TObject);
Var aRect : TRect;
Text : String;
begin aRect := Rect(0,0,1,1); // pour récuperer la taille du texte
Text := 'DelphiFr est un site super génial'; // le texte
Canvas.Font.Style := [fsItalic]; // la font en italic
//cette ligne calcule l'espace utile pour le texte en fonction de la font
DrawText(Canvas.Handle, PChar(Text), Length(Text), aRect, DT_CALCRECT);
With aRect Do// et ici on affiche le résultat (la taille)
Label1.Caption : = Format(' %d,%d %d,%d', [Left, Top, Right, Bottom]);
end;
Voilà et pour vérifier tu met "Canvas.Font.Style := [fsItalic]; " en commentaire et tu verras qu'il y a une différence entre Italic et Normal
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 30 mai 2006 à 12:30
Tiens voici une solution plus simple de réutilisation :
Procedure GetTextSize(aFont : TFont; Text : String;Var aRect : TRect);
Var Canv : TCanvas;
Dc : HDC;
Begin Canv := TCanvas.Create;
Dc := CreateCompatibleDc(0);
Canv.Handle := Dc;
Try
Canv.Font : = aFont;
DrawText(Canv.Handle, PChar(Text), Length(Text), aRect, DT_CALCRECT);
Finally Canv.Free;
DeleteDc(Dc);
End;
End;
procedure TForm1.Button2Click(Sender: TObject);
Var aRect : TRect;
begin Label1.Caption := 'DelphiFr est un site super génial';
aRect := Label1.BoundsRect;
GetTextSize(Label1.font, Label1.Caption,aRect);
Label1.BoundsRect := aRect;
end;