c#uwp指针位置

时间:2017-07-04 11:42:44

标签: c# uwp position mouse

在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;

但它并不总是返回正确的位置。

获取当前鼠标位置的任何其他属性?

3 个答案:

答案 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)

  1. 通过代码

    添加PointerMoved事件处理程序
    mainGrid.PointerMoved += mainGrid_PointerMoved;
    
  2. 在事件处理程序

    中删除PointerMoved事件处理程序
    mainGrid.PointerMoved -= mainGrid_PointerMoved;
    
  3. 然后在PointerMoved事件处理程序中获取指针数据

    var x = e.GetCurrentPoint(mainGrid).Position.X;
    var y = e.GetCurrentPoint(mainGrid).Position.X;
    
  4. 这是整个代码

    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;