Déplacer une picturebox [Résolu]

Signaler
Messages postés
144
Date d'inscription
samedi 21 octobre 2000
Statut
Membre
Dernière intervention
7 mai 2009
-
Messages postés
10
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
22 septembre 2010
-
Bonjour,
voila durant l'execution de mon programme je souhaite déplacer mon image pour cela j'utilise l'évenement MouseMove de la picturebox concernée pour la déplacer ce qui donne:

private
void pictureBox2_MouseMove(
object sender,
MouseEventArgs e){
if (e.Button MouseButtons.Left)pictureBox2.Location

new
Point(e.X, e.Y);
//location;}

Seulement le problème c'est que lorsque je fais, ça une chose bizarre ce produit... la picturebox aparait 2 fois à des coordonné différente  et elle laisse des trainée pas très propre.

Quelqu'un sait comment régler ce problème?

Tuizi

8 réponses

Messages postés
144
Date d'inscription
samedi 21 octobre 2000
Statut
Membre
Dernière intervention
7 mai 2009

Ouch alors la c encore plus fou!!!!



Pour enlever les trainé, j'ai fais un





Application

.DoEvents();






Je n'ai plus les trianées, mais lorsque je relache mon clic, sa fait comme une animation ou ma picture box revient à sa position original!!!




Je tiens a précisez que dans mon code il y a juste ça, une picturebox et ce code!!!!!!!




Tuizi
Messages postés
144
Date d'inscription
samedi 21 octobre 2000
Statut
Membre
Dernière intervention
7 mai 2009

Huuummm je viens de comprendre, il faut prendre la position du curseur avec


Cursor



.Position
et ça règle le problème, car avec le e.X, lorsque l'on est dans la picturebox sa marche mais au dela, les coordonées ne sont plus bonne et créé un double affichage... enfin j'arrive pas a l'expliquer mais faite le vous comprendré!


Tuizi
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

Oui, le paramètre e donne les coordonnées relatives au contrôle déclenchant l'event, pas relatives à son conteneur.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
144
Date d'inscription
samedi 21 octobre 2000
Statut
Membre
Dernière intervention
7 mai 2009

Par contre j'ai un problème c'est que j'utilise Cursor pour placer ma pictureBox mais ça créé un gros décalage car:

Si je met par exemple:



pictureBox2.Location =




new



Point
(

Cursor
.Position.X,

Cursor
.Position.Y);
au moment ou je suis à X 0 et Y 0, mon curseur lui est en dehors de ma Form et mon image est coller au coordonné X= 0 et Y = 0 de ma Form, donc il y a un décalage si tu vois ce que je veux dire. J'ai donc essayé





pictureBox2.Location = newPoint(Cursor.Position.X - this.Location.X,Cursor.Position.Y - this.Location.Y);





Mais maintenant le décalage correspond au la taille de la barre de titre (je suis pas sur qu'elle se nomme comme ça, enfin c'est celle avec le bouton réduir, agrandir, fermer). Je vais voir si il n'y a pas moyen de bidouiller un petit calcul qui me donne cette taille avec this.ClientRectangle
par exemple.


Tuizi
Messages postés
144
Date d'inscription
samedi 21 octobre 2000
Statut
Membre
Dernière intervention
7 mai 2009

Wowwww!!! Monsieur Coq!!! mon héros!
Pas besoin de calcul!!! la méthode suffit:


pictureBox2.Location =


this.PointToClient(newPoint(Cursor.Position.X, Cursor.Position.Y));




Bien joué, merci!

Tuizi
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
lol
De rien.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
10
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
22 septembre 2010
1
bonjour,
je veux savoire coment déplacer une image(silhouette) en haut a gauche
merci
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Comme le dit la doc, Cursor.Position donne la position du curseur en coordonnées écran.
Utilises la méthode PointToClient du contrôle conteneur du PictureBox (dans ton cas, le formulaire apparemment)

/*
coq
MVP Visual C#
CoqBlog
*/