Déplacer une image avec la souris [Résolu]

ingelishome 2 Messages postés lundi 24 mars 2003Date d'inscription 14 mars 2005 Dernière intervention - 14 mars 2005 à 16:00 - Dernière réponse : ingelishome 2 Messages postés lundi 24 mars 2003Date d'inscription 14 mars 2005 Dernière intervention
- 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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
ingelishome 2 Messages postés lundi 24 mars 2003Date d'inscription 14 mars 2005 Dernière intervention - 14 mars 2005 à 22:27
3
Merci
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 ! ! ! !

Merci ingelishome 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de ingelishome
cleter 92 Messages postés mardi 25 février 2003Date d'inscription 15 mai 2006 Dernière intervention - 14 mars 2005 à 16:52
0
Merci
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.
Commenter la réponse de cleter

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.