wpf vb.net canvas mouse mouse-position

wpf - Obtener la posición del ratón en el lienzo(pero NO en la ventana)?



vb.net canvas (3)

¿No funciona esto?

Point p = Mouse.GetPosition(canvas);

La posición del puntero del mouse se calcula en relación con el elemento especificado y la esquina superior izquierda del elemento es el punto de origen.

Tengo un proyecto en WPF 4 y vb.net 2010.

Tengo un lienzo dentro de una ventana. La ventana está en pantalla completa, pero el lienzo se establece en un sólido 640x480 en el centro de la ventana. Necesito obtener la posición del mouse dentro del lienzo, pero NO dentro de la ventana. ¿Cómo hago esto?


Hola lo importante es el

NO en la ventana

El lienzo también es parte de la ventana. un ejemplo:

  • el estado Window.AllowsTransparency está en true
  • El Window.Background es # 00000000 (completamente transparente)
  • el Window.Style es Ninguno
  • el estado de window es maximizado y
  • ¡NO hay controles o elementos en la ventana!

... así que si inicia la aplicación, verá Nada ahora, dígame cómo obtener la posición del ratón en la pantalla en píxeles.

!¡Advertencia! si usas Mouse.GetPosition(this); volverá x0 y0 cada vez


así que resolví el problema usando System.Windows.Forms.Control.MousePosition es un poco una mezcla de wpf y Windows.Forms, pero he dejado de usar xD.

Perdón por gritar: /

Para hacerme las cosas más fáciles, hice una extensión:

<DebuggerHidden> _ <System.Runtime.CompilerServices.Extension> _ Public Function toWfpPoint(p As System.Drawing.Point) As Point Return new Point(p.X, p.Y) End Function

Ahora solo puedo decirlo de esta manera:

Dim MousPos As Point = System.Windows.Forms.Control.MousePosition.toWfpPoint