Domanda

Il fatto è che ho alcuni elementi grafici mostrati in un modulo, ad esempio un rettangolo, e voglio catturare quando il punto supera i campi. Quindi io cerco di trovare i corrispondenti per i loro rettangoli, ma dato che sono i cordoni nella forma che non corrisponde a quelli con la posizione del mouse.

Quindi mi chiedo c'è un modo per trovare quale coord sullo schermo ha un Point sullo schermo e non nella forma o nel controller?

È stato utile?

Soluzione

Ogni controllo ha i metodi PointToFoo per la conversione. Nota che dovresti chiamarlo dal genitore dell'oggetto che si trova nella posizione desiderata:

Point scrPos = this.PointToScreen(panel1.Location);

In alternativa, puoi ottenere le coordinate dello schermo del pannello con:

Point scrPos = panel1.PointToScreen(new Point(0,0));

Si noti che i due esempi precedenti potrebbero ottenere risultati diversi a causa delle dimensioni del bordo del pannello.

Altri suggerimenti

Se si utilizza l'oggetto grafico per il modulo chiamando this.CreateGraphics () all'interno del modulo, le coordinate utilizzate quando si disegna il rettangolo dovrebbero essere esattamente le stesse di quelle restituite dal fare clic sull'evento nel modulo.

Sai in quali coordinate si trova il tuo puntatore? Puoi ottenere le coordinate per la tua finestra con una chiamata a GetWindowRect () e sottrarre la parte superiore / sinistra del cursore del mouse per ottenere le coordinate del client.

Mi sembra di ricordare che in effetti esiste una funzione per farlo, ma è da un po 'che non mi diletto nei controlli della GUI personalizzati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top