2013-08-04 2 views
8

J'ai une Picture Box avec une image chargée et je veux lire l'emplacement (comme dans x, y dans la Picture Box) lorsque je clique sur l'image; Est-ce possible ? Encore plus, puis-je lire ces coordonnées (Points) quand je passe la souris dessus?Lire les coordonnées de la souris sur le clic

Je sais que je dois utiliser les événements donnés (Mouse Click et Mouse Over) mais je ne sais pas comment lire les coordonnées où se trouve le pointeur de la souris.

Répondre

1

Qu'en est-il de brancher l'événement MouseUp, puis obtenir l'emplacement à partir de MouseEventArgs?

Comme ceci:

private void pictureBox_MouseUp(object sender, MouseEventArgs e) 
{ 
    Point mousePointerLocation = e.Location; 
} 
+0

Cela fonctionne avec juste un changement: Point MouseLoc = e.Location; Merci! – Razvan

+0

Oui, j'ai compris mon erreur après l'avoir écrite. Merci d'avoir signalé! Heureux que ça a aidé! :) – jmelhus

2

Vous pouvez obtenir les coordonnées X et Y comme suit,

this.Cursor = new Cursor(Cursor.Current.Handle); 

    int xCoordinate = Cursor.Position.X; 
    int yCoordinate = Cursor.Position.Y; 

Si vous souhaitez obtenir les coordonnées au sein de la zone d'image, utilisez le code suivant,

private void pictureBox1_MouseUp(object sender, MouseEventArgs e) 
{ 
    int xCoordinate = e.X; 
    int yCoordinate = e.Y; 
} 
+0

cela fonctionne! Je vous remercie! – Razvan

+0

vous n'avez pas besoin de tout cela pour mouseUp mais vous pouvez l'utiliser dans mouse_hover –

+0

Cela donne les coordonnées relatives au FORM. Pas à la limite de PictureBox ... – bonCodigo

4

je vais résumer les réponses:

dans MouseClick, MouseUp et beaucoup d'autres événements que vous avez le MouseEventArgs qui contient Location de la souris. mais vous n'avez pas

dans MouseHoverMouseEventArgs et à cet effet, si vous avez besoin de l'emplacement du curseur, utilisez par exemple Coder:

private void Form1_MouseHover(object sender, EventArgs e) 
    { 
    this.Cursor = new Cursor(Cursor.Current.Handle); 

    int xCoordinate = Cursor.Position.X; 
    int yCoordinate = Cursor.Position.Y; 
    } 
20

Bien que d'autres réponses sont correctes laissez-moi ajouter mon point à lui. Vous avez indiqué que vous devez raccorder des événements MouseClick ou MouseOver à cette fin. En fait, il n'est pas nécessaire d'accrocher ces événements pour obtenir Coordinates, vous pouvez obtenir le Coordinates en seulement Click événement lui-même.

private void pictureBox1_Click(object sender, EventArgs e) 
{ 
    MouseEventArgs me = (MouseEventArgs)e; 
    Point coordinates = me.Location; 
} 

Le code ci-dessus fonctionne depuis enveloppe d'événement Click argument de eMouseEventArgs vous pouvez simplement le jeter et faire usage.

+0

C'est la réponse si OP veut (j'imagine évidemment) obtenir les coordonnées du point de clic par rapport à la zone d'image. – bonCodigo

+0

Ceci est correct tant qu'il n'y a pas de transformation sur l'image telle qu'elle est affichée dans 'PictureBox'. Si la version rendue est étirée, mise à l'échelle ou panoramique, alors la propriété 'MouseEventArgs.Location' nécessitera des transformations identiques appliquées pour obtenir le clic dans les coordonnées de l'image. – kdbanman

+0

@kdbanman Qu'est-ce que les transformations ont à faire avec l'obtention de l'emplacement de la zone d'image sur lequel vous avez cliqué? Op a besoin des coordonnées de la souris en ce qui concerne la zone de l'image et non l'image à l'intérieur. –

Questions connexes