Drawtext and co....

Résolu
Utilisateur anonyme - 13 févr. 2007 à 22:09
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 - 16 févr. 2007 à 11:27
Bonjour,

je cherche a faire deux choses précises sosu delphi 6 :

1. sur une image JPG ou BMP, superpositionner une autre image plus petite
2. sur une image JPG ou BMP, superpositionner un text

je l'ai deja fait mais je ne retrouve plus comment. C'est faisable mais comment.....

Merci de votre aide

6 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
15 févr. 2007 à 14:12
Salut,

Voici un exemple d'écriture de texte sur plusieurs lignes et centré dans le bitmap.

procedure InsertText(Bmp: TBitmap; Text: string; TextW: integer);
var
  R: TRect;
  BW, BH: integer;
begin
  with Bmp.Canvas do
  begin
    Font.Color:= clred;
    Font.Size:= 18;
    Font.Style:= [fsBold];
    Brush.Style:= bsClear; // pour écrire en transparent
  end;
  BW:= Bmp.Width;
  BH:= Bmp.Height;
  // initialisation du TRect
  R.Left:= 0;
  R.Top:= 0;
  R.Right:= TextW; // largeur du texte souhaitée
  R.Bottom:= BH;
  // 1° appel à DrawText pour modifier R en fonction du texte
  DrawText(Bmp.Canvas.Handle, PChar(Text), -1, R,
                        DT_CENTER or DT_WORDBREAK or DT_CALCRECT);
  // réajustement de R pour le placer au centre de l'image
  R.Left:= (BW - R.Right) div 2;
  R.Right:= R.Right + R.Left;
  R.Top:= (BH - R.Bottom) div 2;
  R.Bottom:= R.Bottom + R.Top;
  // 2° appel pour écrire
  DrawText(Bmp.Canvas.Handle, PChar(Text), -1, R,
                        DT_CENTER or DT_WORDBREAK);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   InsertText(Image1.Picture.Bitmap, 'Voici un petit texte', 150);
   Image1.Invalidate; // nécessaire dans ce cas
end;

A +
Thierry
3
Rejoignez-nous