Déplacer une image avec la souris

Résolu
ingelishome Messages postés 2 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 14 mars 2005 - 14 mars 2005 à 16:00
ingelishome Messages postés 2 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 14 mars 2005 - 14 mars 2005 à 22:27
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

2 réponses

ingelishome Messages postés 2 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 14 mars 2005
14 mars 2005 à 22:27
Ho miracle! En effet mon appli été complètement bloqué ce qui ne
permettai meme pas le rafraichissement de l'écran -> un simple
thread a suffi!



Merci Cleter ! ! ! !
3
cleter Messages postés 92 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 15 mai 2006
14 mars 2005 à 16:52
slt,

Je ne connais pas ces fonctions, mais je pense que les traces sont du
au faite que pendant que tu déplace ton image, le reste de
l'application est bloqué. Je pense que tu devrai mettre la partie
"deplacement d'une image" dans un thread afin que le reste ne soit pas
bloqué, et donc ca devrai te virer tes trainées.
0
Rejoignez-nous