2010-11-26 3 views
0

Je voudrais suivre la position du curseur de la souris, dans les coordonnées de l'écran, n'importe où sur l'écran. Donc, même si le curseur de la souris se déplace en dehors des limites de la fenêtre, y a-t-il un moyen d'obtenir la position du curseur de la souris? Ce que je fais essaie d'obtenir un popup pour suivre le curseur de la souris, même si elle se déplace hors de la fenêtre principale.comment GetMousePosition n'importe où sur l'écran, en dehors des limites de la fenêtre (ou tout visuel)

Voici un extrait de code de ce que j'ai essayé (et n'a pas fonctionné):

 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."; 
    } 

Répondre

0

Jamais l'esprit, je me suis aperçu qu'il n'y a pas moyen de placer un Popup par rapport à l'écran, seul parent au visuel qui le contient.

3

Quel était exactement votre problème?
Attendez! Il est un moyen de positionner un popup par rapport à l'écran. voir PlacementMode.AbsolutePoint
Cela montre frimousse heureux voler autour de:

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

Il y a plusieurs façons d'obtenir les coordonnées d'écran de la position de la souris en dehors d'un WPF Window. Malheureusement, vous devrez ajouter des références pour utiliser l'une ou l'autre, mais est possible. Vous pouvez trouver des exemples d'entre eux dans la réponse @ FredrikHedblad à la question How do I get the current mouse screen coordinates in WPF?. Par coïncidence, cette question a été répondue quelques jours avant que vous posiez cette question et abandonné dans les 21 minutes de demander.

Questions connexes