Bonjour,
Je travail sur Borland c++ Builder 6, et je souhaiterai déplacer une TImage avec la souis. Ca parait tout bête comme ca, mais je me prend la tête dessus depuis pas mal de temps.
J'ai, au début, juste modifié les coordonnées de la TImage en fonction ndu déplacement de la souris, mais ca se rafraichissai tout le temps et ca scintillait. J'ai donc cherché et j'ai trouvé des fonction utilisant le double buffering (ou back buffering) tel que BitBlt, StretchBlt...
En effet, ca ne clignotte pu, mais ma fenêtre n'est pu rafraichie cette fois ci. J'ai donc essayé de mettre ca dans un thread, mais ca fait pareil.
C'est pour cela que j'ai recour à vous tous
Voici mon (très simple) code :
Merci de votre aide précieuse !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32 //Clique sur la TImage "Img_tra" void __fastcall TForm1::clk_enf(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { //StartX, StartY : variables globals StartX=X; StartY=Y; } //déplacement de la souris sur la TImage "Img_tra" void __fastcall TForm1::clk_move(TObject *Sender, TShiftState Shift, int X, int Y) { int DiffX,DiffY; //Différence entre le point de départ et de la position actuel de la souris DiffX=StartX-X; DiffY=StartY-Y; HDC hdcMem; HDC tmpDeskDC=GetDC(Handle); if (Shift.Contains(ssLeft)) // vérifie que le bouton gauche est enfoncé { //Affiche l'image "Img_tra" a ses nouvelles coordonnées BitBlt(tmpDeskDC ,Img_tra->Left-DiffX,Img_tra->Top-DiffY, Img_Largeur, Img_Hauteur, Img_tra->Canvas->Handle, 0, 0, SRCCOPY); } ReleaseDC(tmpDeskDC, hdcMem); }
[modéré par netah_25]
[Pour utiliser les balises [code] laissez activé le BBCode - Merci d'y penser a l'avenir]
Partager