Inverser du texte dans un bitmap

cs_apophys Messages postés 1 Date d'inscription mercredi 14 juillet 2004 Statut Membre Dernière intervention 1 avril 2006 - 1 avril 2006 à 14:21
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 1 avril 2006 à 19:32
Bonjour,

J'ai un texte dans une image ecris a l'aide de canvas.TexTOut , je souhaire lorsque que l'on pas la souris de faire comme un rectangle de selection. par exemple que le texte s'inverse lorsque que la souris est dessus.

Comment puis-je inverser le texte ?
ou
comment mettre un rectangle de selection avec une couleur sans que le texte soit effacer ?

Merci de votre aide.

1 réponse

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
1 avril 2006 à 19:32
uses Types;

var
TxtRect : TRect = (left : 10; top : 10; right : 70; bottom : 16);

nTxtColor : TColor = $000000; {clBlack}
iTxtColor : TColor = $0000FF; {clRed}
TxtR : boolean = false;
OldR : boolean = false;
TxtText : string = 'Hello!';

procedure TForm1.Image1MouseMove(Sender : TObject; X,Y : integer ...);
var TCol, GCol : TColor;
begin
// on test si le curseur est dans la zone du texte
TxtR := Types.PtInRect(TxtRect,Point(X,Y));

// si oui on selectionne la couleur "over"
// sinon on selectionne la couleur normale

if TxtR then begin
TCol := iTxtColor;
end else begin
TCol := nTxtColor;
end;

// si l'etat a changé
if TxtR <> OldR then begin
with image1.picture.bitmap.canvas do begin
// on efface la zone de texte
FillRect(TxtRect);
// on applique la couleur
Pen.Color := TCol;
font.color := TCol;
// on dessine le texte dans sa zone
TextRect(TxtRect, 0, 0, TxtText);
end;
end;

// on sauvegarde l'ancien etat pour le prochain passage
OldR := TxtR;

end;


<hr size="2" width="100%">
0
Rejoignez-nous