procedure TForm1.AImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CreateACopy(AImage);
ViewACopy(AImage);
If (SSLeft in Shift) then AImage.canvas.rectangle(xi,yi,x,y);
end;
procedure TForm1.AImageMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
If (SSLeft in Shift) then
Begin
ViewACopy(AImage);
AImage.canvas.rectangle(xi,yi,x,y);
end;
End;
procedure TForm1.AImageMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
AImage.Canvas.MoveTo(X,Y);
Xi:=X;// a utiliser pour le rectangle et à définir comme variable globale
Yi:=Y;//idem
end;
Procedure CreateACopy(AImage : TImage);
Begin
IF CopyBmp<>nil then FreeAndNil(CopyBmp); //copybmp : variable globale
CopyBmp:=TBitMap.Create;
CopyBmp.Width:=AImage.Width;
CopyBmp.Height:=AImage.Height;
CopyBmp.Canvas.StretchDraw(CopyBmp.Canvas.ClipRect, AImage.Picture.Bitmap);
End;
Procedure ViewACopy(AImage : TImage);
Begin
If CopyBmp<>nil then
AImage.Picture.Bitmap.Assign(CopyBmp);
End;
*Dans le cas d'une Form, N_M_B a raison : la procedure OnPaint existe et est bien plus simple. Donc Méa_Culpa : ;).
*La procedure que je t'ai passé est générale : Si tu veux dessiner sur une Form d'une autre application que la tienne, cela est bien plus complexe. La procedure que je t'ai passé reste valable (dans le principe) mais tu dois l'adapter :
- tu créer un bitmap
-tu copies le canvas de ta form dans celui du bitmap.
-Tu affiches ton bitmap sur ta Form.
-Tu dessines sur la Form
les 3 dernières procedures doivent etre réalisées à chaque fois que tu dessines : pour cela tu appelles ce systeme de procedure dans les evenements MouseUp et MouseMove de ta Form principale.
Si maintenant tu veux modifier de facon réelle c'est à dire définitive le canvas de ta Form (application extérieure à la tienne si j'ai bien compris) c'est, je pense, impossible : en effet cela revient à modifier un executable et à ma connaissance cela n'est pas possible (en tout cas à ce niveau là). Donc l'intéret de dessiner sur la Form d'une application exterieure est tres limitée sans parler de la difficulté à le faire.
La procedure que je propose est pour un Timage : pour un TImage tu n'as pas d'évènement OnPaint N_M_B. Ce que tu proposes es valable uniquement pour un TPaintBox : attention alors!
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 4 juil. 2006 à 10:14
Merci, mais le problème c'est que moi je doit dessiner sur le canvas d'une form,.... qui plus est une form d'une autre aplication.... Merci quand meme d'avoir pris le temps de répondre
N_M_B
Messages postés94Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention 1 mars 2008 4 juil. 2006 à 11:31
salut ! francky je pensse que de déssiner sur une application exterieur(on se comprend bien on ne modifie pas le fichier de l'application on repère seulement le Handle de la form et on dessine dessu) on peut toujour intercepter le message a déstination de l'application et repaindre (je pense qu'il fait éffectuer un Hook et c'est un peut complique a mon gout comme la dit francky )on tout les cas j'éspeere que tu va trouver @+
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 4 juil. 2006 à 11:34
Merci pour vos réponces, et en effet, je ne compte pas modifier de maniere définitive la forme de l'aplication, mai simplement son apparance quand mon aplication est active.