Bonjour,
Je suis en train de faire une petite appli sous Borland C++ Builder dans lequel j'ai besoin de déplacer une image. Pour ce faire j'ai eu au début idée de la manipuler avec la souris : simplement en cliquant sur l'image et tant que le bouton gauche n'est pas relaché, faire bouger l'image en fonction du déplacement de la souris.
Ma première manipulation a tout juste consister a faire varier les crdonnées de l'ImageBox, mais ceci entraina un clignottement important : je me suis donc penché sur la question, et j'ai pris connaisances de certaine fonctions (BitBlt, StretchBlt, MoveWindow), et en effet, ca ne clignotte plus, c même très fluide, mais ca fait d'énorme traces ! Comme quand windows plante ! Alors purriez-vous m'aider à enlever ces vilaines trace?
Voici le code (Maléfique ! ) :
//Lorsque l'on appuie sur un bouton de la souris
void __fastcall TForm1::clk_enf(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
// StartX et StartY sont des variables globales
StartX=X;
StartY=Y;
}
//Lorsque la souris bouge
void __fastcall TForm1::clk_depl(TObject *Sender, TShiftState Shift, int X,
int Y)
{
int DiffX,DiffY;
if (Shift.Contains(ssLeft)) // vérifie que le bouton gauche est enfoncé
{
HDC hDC;
HDC hDeskDC= GetDC(Handle);
//Fait la différence entre le point d'origine et le déplacement de la souris
DiffX=StartX-X;
DiffY=StartY-Y;
//Déplace l'image "Img_tra" vers ses nouvelles coordonnées
StretchBlt(hDeskDC,Img_tra->Left-DiffX,Img_tra->Top- DiffY,Img_Largeur,Img_Hauteur,Img_tra->Canvas- >Handle,0,0,Img_Largeur,Img_Hauteur,SRCCOPY);
//Libère les resources
ReleaseDC(hDeskDC, hDC);
}
}
Merci d'avance pour votre aide précieuse