2010-11-26 5 views
0

マウスカーソルの位置を画面の座標で、画面上の任意の場所で追跡したいと思います。したがって、マウスカーソルがウィンドウの境界の外に移動しても、マウスカーソルの位置を取得する方法はありますか?どのようにGetMousePositionをウィンドウの境界(または任意のビジュアル)の境界外に画面上のどこに移動するか

私がやっていることは、メインウィンドウから外れても、マウスカーソルに追随するポップアップを得ようとしていることです。ここで

は、私が試した(と働いていない)何のコードスニペットです:

 private void OnLoaded(object sender, RoutedEventArgs e) 
    {   
     bool gotcapture = this.CaptureMouse(); 
     Mouse.AddLostMouseCaptureHandler(this, this.OnMouseLostCapture); 
    } 
      Point mouse_position_relative = Mouse.GetPosition(this); 
     Point mouse_screen_position = popup.PointToScreen(mouse_position_relative); 
     private void OnMouseLostCapture(object sender, MouseEventArgs e) 
    { 
     bool gotcapture = this.CaptureMouse(); 
     this.textblock.Text = "lost capture."; 
    } 

答えて

0

気にしないで、私は唯一の相対的な、画面にポップアップを位置決めする方法はありません実現しましたそれを含むビジュアルに移動します。

3

あなたの問題は何でしたか?
待ち時間! で、画面に対してポップアップを配置する方法です。 PlacementMode.AbsolutePoint
これは周りに飛んで少し幸せそうな顔を示した参照してください。

private Popup _popup; 

public Window1() 
{ 
    InitializeComponent(); 

    this.Loaded += OnLoaded; 
} 

private void OnLoaded(object sender, RoutedEventArgs e) 
{ 
    _popup = new Popup 
       { 
        Child = new TextBlock {Text = "=))", Background = Brushes.White}, 
        Placement = PlacementMode.AbsolutePoint, 
        StaysOpen = true, 
        IsOpen = true 
       }; 
    MouseMove += MouseMoveMethod; 
    CaptureMouse(); 
} 

private void MouseMoveMethod(object sender, MouseEventArgs e) 
{ 
    var relativePosition = e.GetPosition(this); 
    var point= PointToScreen(relativePosition); 
    _popup.HorizontalOffset = point.X; 
    _popup.VerticalOffset = point.Y; 
} 
0

WPF Windowの外側のマウス位置のスクリーン座標を取得するいくつかの方法があります。残念ながら、いずれかを使用するために参照を追加する必要がありますが、です。両方の例は、@ FredrikHedbladのHow do I get the current mouse screen coordinates in WPF?質問に対する回答にあります。偶然にも、あなたはこの質問をする前に数日前にその質問に回答し、質問して21分以内に諦めました。

関連する問題