PDA

View Full Version : [C#] Coordinate del puntatore


Lim
10-10-2008, 16:32
Sto sviluppando un'applicazione che deve restituire le coordinate del puntatore quando clicca su un'immagine.

In C# non è complicato, esiste il metodo apposito, ma il suo comportamento non è proprio quello che cercavo.
Infatti, il metodo "MousePosition.X.ToString();" restituisce la coordinata X del puntatore rispetto allo schermo, mentre a me serve la coordinata rispetto all'immagine visualizzata all'interno del Form.
Questa differenza è problematica, perchè se sposto il form all'interno dello schermo, la coordinata dello stesso punto cliccato sull'immagine cambia.

Sarebbe preferibile un metodo tipo "Image.X" o qualcosa del genere...

Qualcuno ha un'idea sul tipo di approccio da seguire?


Grazie!!

gugoXX
10-10-2008, 23:06
Sto sviluppando un'applicazione che deve restituire le coordinate del puntatore quando clicca su un'immagine.

In C# non è complicato, esiste il metodo apposito, ma il suo comportamento non è proprio quello che cercavo.
Infatti, il metodo "MousePosition.X.ToString();" restituisce la coordinata X del puntatore rispetto allo schermo, mentre a me serve la coordinata rispetto all'immagine visualizzata all'interno del Form.
Questa differenza è problematica, perchè se sposto il form all'interno dello schermo, la coordinata dello stesso punto cliccato sull'immagine cambia.

Sarebbe preferibile un metodo tipo "Image.X" o qualcosa del genere...

Qualcuno ha un'idea sul tipo di approccio da seguire?


Grazie!!

Sottraici le coordinate della form, che puoi prendere con
PointToScreen(new Point(0,0));

Comunque il metodo piu' ortodosso e' quello di piazzare l'immagine in una picturebox, e intercettare l'evento
MouseClick
il cui prototipo e'

private void xxxx_MouseClick(object sender, MouseEventArgs e)

Pertanto quando cliccherai con il mouse su questa immagine ti verra' chiamata tale funzione, e nel secondo parametro potrai leggere le coordinate


private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
int mousex = e.X;
int mousey = e.Y;
}


Ma anche altre cose, come lo stato dei pulsanti, per sapere se hai cliccato con destro o sinistro (o centro, o chissa' quale altro)
oppure informazioni sulla mouse wheel, numero di click, etc.