在UWP中,我试图获得指针的位置。
我已成功完成下一个活动:
private void Grid_PointerMoved(object sender, PointerRoutedEventArgs e)
{
PointerPoint point = e.GetCurrentPoint(mainGrid);
var x = point.Position.X;
var y = point.Position.Y;
}
通过这种方式,它将一直被解雇。所以,我需要一些财产来获得这个位置。我发现了这个:
var pointerPosition = Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerPosition;
但它并不总是返回正确的位置。
获取当前鼠标位置的任何其他属性?
答案 0 :(得分:6)
var pointerPosition = Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerPosition;
pointerPosition
为您提供客户坐标,即光标位置X&屏幕的Y,与您的应用窗口无关。
因此,您只需先使用Window.Current.Bounds
查找应用窗口的坐标,然后再显示 -
var x = pointerPosition.X - Window.Current.Bounds.X;
var y = pointerPosition.Y - Window.Current.Bounds.Y;
答案 1 :(得分:0)
通过代码
添加PointerMoved事件处理程序mainGrid.PointerMoved += mainGrid_PointerMoved;
在事件处理程序
中删除PointerMoved事件处理程序mainGrid.PointerMoved -= mainGrid_PointerMoved;
然后在PointerMoved事件处理程序中获取指针数据
var x = e.GetCurrentPoint(mainGrid).Position.X;
var y = e.GetCurrentPoint(mainGrid).Position.X;
这是整个代码
private void GetPointerPosition()
{
mainGrid.PointerMoved += mainGrid_PointerMoved;
}
private void MainStack_PointerMoved(object sender, PointerRoutedEventArgs e)
{
mainGrid.PointerMoved -= mainGrid_PointerMoved;
var x = e.GetCurrentPoint(mainGrid).Position.X;
var y = e.GetCurrentPoint(mainGrid).Position.X;
}
从此处了解有关Adding event handlers in code的详情
答案 2 :(得分:0)
这在我的画布上对我有用:
var x = e.GetCurrentPoint(canBackArea).Position.X;
var y = e.GetCurrentPoint(canBackArea).Position.Y;