2013-08-04 10 views
8

Mam Picture Box z załadowanym obrazem i chcę odczytać lokalizację (jak w x, y wewnątrz Picture Box) po kliknięciu obrazu; czy to możliwe ? Co więcej, czy mogę odczytać te współrzędne (punkty), gdy ustawię kursor myszy?Odczytać współrzędne myszy w polu graficznym po kliknięciu

Wiem, że muszę korzystać z podanych zdarzeń (kliknięcie myszką i myszką), ale nie wiem, jak odczytać współrzędne, w których znajduje się wskaźnik myszy.

Odpowiedz

1

Co powiesz na podłączenie zdarzenia MouseUp, a następnie pobranie lokalizacji z MouseEventArgs?

Jak to:

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

Działa tylko z jedną zmianą: Point MouseLoc = e.Location; Dzięki! – Razvan

+0

Tak, zrozumiałem swój błąd po napisaniu go. Dzięki za wskazanie! Cieszę się, że pomogło! :) – jmelhus

2

można uzyskać współrzędne X i Y w następujący

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

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

Jeśli chcesz uzyskać współrzędnych w oknie obrazu, należy użyć następującego kodu,

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

to działa! Dziękuję Ci! – Razvan

+0

nie potrzebujesz tego do MouseUp, ale możesz go użyć w mouse_hover –

+0

Daje to współrzędne względem FORMULARZA. Nie do granicy PictureBox ... – bonCodigo

4

Podsumuję odpowiedzi:

w MouseClick, MouseUp i wiele innych zdarzeń, które mają MouseEventArgs, który zawiera Location myszy.

w MouseHover jednak nie masz MouseEventArgs i do nich, jeśli potrzebujesz położenia kursora, należy użyć przykładu 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

Choć inne odpowiedzi są poprawne dodam mój punkt do niego. Wskazałeś, że musisz podłączyć do tego celu zdarzenia MouseClick lub MouseOver. W rzeczywistości nie ma potrzeby przechwytywania tych zdarzeń, aby uzyskać Coordinates, można uzyskać tylko Coordinates tylko w zdarzeniu Click.

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

Powyższy kod działa od e Argument kliknij zdarzenie jest zawijany MouseEventArgs można po prostu rzucić to i korzystania z niego.

+0

To jest odpowiedź, jeśli OP chce (jak sądzę) uzyskać współrzędne punktu kliknięcia względem obrazka. – bonCodigo

+0

Jest to prawidłowe, o ile nie ma transformacji obrazu, który jest renderowany w "PictureBox". Jeśli renderowana wersja jest rozciągnięta, skalowana lub przesunięta, wówczas właściwość 'MouseEventArgs.Location' będzie wymagać identycznych przekształceń, które zostaną zastosowane w celu uzyskania współrzędnych kliknięcia w obrazie. – kdbanman

+0

@kdbanman co transformacje mają wspólnego z kliknięciem lokalizacji ramki graficznej? Op potrzebuje współrzędnych myszy w odniesieniu do ramki obrazu, a nie obrazu wewnątrz. –

Powiązane problemy