2017-07-04 68 views
2

在UWP中,我试图获取指针的位置。c#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; 

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

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

+1

您的意思是“所以,我需要一些财产来获得这个位置“?因为您已经使用上述方法得到了鼠标位置 –

+0

但是每次移动鼠标时它都会被触发。 – user3239349

+0

所以你需要指定某个函数被调用时的指针位置。我对吗? –

回答

1
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; 
+0

另外'Window.Current.CoreWindow.PointerPosition'应该给你相同的客户端坐标。 –

+1

这就是我一直在寻找的,thanx :) – user3239349

+0

你知道吗?也许如何在手机上获得当前的“保持位置”? – user3239349

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; 
    

这里,而不是相对整个代码

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

0

这在我的画布为我工作:

var x = e.GetCurrentPoint(canBackArea).Position.X; 
var y = e.GetCurrentPoint(canBackArea).Position.Y;