Largeur d'un texte en italic

Résolu
vivelesquads Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 11 juillet 2008 - 30 mai 2006 à 11:24
vivelesquads Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 11 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.

Merci d'avance

3 réponses

vivelesquads Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 11 juillet 2008
30 mai 2006 à 13:44
Merci bien pour cette réponse si rapide




 
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
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;


<hr />




 n'oubliez pas de cliquer sur
Réponse Acceptée





si elle vous convient



<hr />













@+
Cirec
0
Rejoignez-nous