ingelishome
Messages postés2Date d'inscriptionlundi 24 mars 2003StatutMembreDernière intervention14 mars 2005
-
14 mars 2005 à 16:00
ingelishome
Messages postés2Date d'inscriptionlundi 24 mars 2003StatutMembreDernière intervention14 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);
}
}
cleter
Messages postés92Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention15 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.