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 :

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);
}
Merci de votre aide précieuse !

[modéré par netah_25]
[Pour utiliser les balises [code] laissez activé le BBCode -
Merci d'y penser a l'avenir]