2017-07-04 87 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;