Получить положение мыши на холсте (но не на окне)?

У меня есть проект в WPF 4 и vb.net 2010.

У меня есть холст внутри окна. Окно полноэкранное, но холст установлен в сплошное 640x480 в центре окна. Мне нужно получить положение мыши внутри холста, но НЕ внутри окна. Как это сделать?

Ответы

Ответ 1

Не работает ли это?

Point p = Mouse.GetPosition(canvas);

Положение указателя мыши рассчитанный относительно указанного элемент с верхним левым углом элемент является точкой отсчета,

Ответ 2

Привет, важно, чтобы

НЕ в окне

холст также является частью окна. один пример:

  • Состояние Window.AllowsTransparency включено в true
  • Window.Background - # 00000000 (полностью прозрачный)
  • Window.Style is None
  • Окно. Штат - Максимизировано и
  • в окне нет элементов управления или элементов.

... поэтому, если вы запустите приложение, вы увидите Nothing теперь скажите мне, как получить указатель мыши на экране в пикселях

! Внимание! если вы juse Mouse.GetPosition(this);, он будет возвращать x0 y0 каждый раз

Ответ 3

поэтому я решил проблему, используя System.Windows.Forms.Control.MousePosition немного комбинацию wpf и Windows.Forms, но я отказался от xD.

Извините за крик:/

Чтобы облегчить мне, я сделал расширение:

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

Теперь я просто могу это рассказать так:

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