System.Windows.Input.GetPosition (UIElement) дает неверные значения - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть приложение с двумя окнами, окном A и окном B. В окне A есть кнопка CoordinateButton, которую я передаю следующей функции:

 private Point FindCoordinates(UIElement CoordinateButton)
 {
     return System.Windows.Input.Mouse.GetPosition(CoordinateButton);
 }

Если я нажму на кнопку в окне A, эта функция вернет точку с маленькими числами, такими как (15, 12), что означает, что я нахожусь на 15 пикселей правее верхнего левого угла кнопки и на 12 пикселей ниже - курсор находится очень близко к точке измерения.

Если я нажму на кнопку в окне B, окно A снова вызовет функцию и передаст кнопку CoordinateButton. Даже если курсор находится всего в нескольких пикселях от CoordinateButton, GetPosition () по-прежнему возвращает сумасшедшие значения, такие как (-1125, -2076), но фактическая мышь определенно находится в пределах 100 пикселей от кнопки. Есть идеи, что происходит?

Я также пытался вычислить разницу, используя такие вещи, как

System.Windows.Forms.Cursor.Position - element.PointToScreen(new Point(0,0))

но мои вычисления заканчиваются на несколько десятков пикселей.

Я также рассмотрел предложения по масштабированию, такие как https://stackoverflow.com/a/26549677/5617177, но они не имели никакого эффекта.

...