Bonjour,
Est ce que qq'un aurait il un module deja fait qui permettrai de bouger une image Jpeg avec la souris dans une form?
Merci...
Version imprimable
Bonjour,
Est ce que qq'un aurait il un module deja fait qui permettrai de bouger une image Jpeg avec la souris dans une form?
Merci...
Bonjour
Tu peux mettre ton JPeg dans un TImage (il y a des composants pour ça ici) et faire qq chose à partir du code ci-dessous (je tire cela d'un de mes fichiers, il faut adapter un peu ce code, ici c'est pour déplacer le TImage avec le bouton droit)
C'est une possibilité, il doit y en avoir d'autres.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 // TFiche_Preferences est le nom de la fiche // Cadre est le nom du TImage int PosX, PosY, DragX, DragY; // pour déplacer les images bool rMouse; void __fastcall TFiche_Preferences::CadreMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button == mbRight) // appui sur bouton droit souris { PosX = X; PosY = Y; // Coord souris rMouse = true; } } void __fastcall TFiche_Preferences::CadreMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { TImage *Img = (TImage*)Sender; if (rMouse) { DragX = X-PosX; // nouvelles coord DragY = Y-PosY; Img->Left = Img->Left +DragX; // je déplace image Img->Top = Img->Top + DragY; } } //--------------------------------------------------------------------------- void __fastcall TFiche_Preferences::CadreMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { rMouse = false; // fin appui sur bouton droit souris pour déplacement cadre }
Salut !
Il vaut mieux utiliser la méthode SetBounds pour fixer en une seule
passe les nouvelles coordonnées de l'image. Celà présente l'avantage de
minimiser les effets de scintillement, sans les supprimer tout à fait.
Code:
1
2
3 bool MoveFlag = false; int Movex; int Movey;
Code:
1
2
3
4
5
6
7 void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { MoveFlag = true; Movex = X; Movey = Y; }
Code:
1
2
3
4
5
6
7
8
9
10
11 void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(MoveFlag) { Image1->SetBounds( Image1->Left + X - Movex, Image1->Top + Y - Movey, Image1->Width, Image1->Height); } }
Pour supprimer les scintillement il faudrait dessiner l'image sur ma form...Code:
1
2
3
4
5 void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { MoveFlag = false; }
A plus !
Un grand merci à vous tous...