我想跟踪屏幕坐标中鼠标光标在屏幕上任何位置的位置。因此,即使鼠标光标移动到窗口边界之外,有没有办法获取鼠标光标的位置?
我正在做的是尝试弹出一个跟随鼠标光标的弹出窗口,即使它离开主窗口。
以下是我尝试过(并且没有效果)的代码片段:
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)
你的问题究竟是什么?
等待! 是一种将Popup相对于屏幕定位的方法。见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;
}
答案 1 :(得分:0)
没关系,我意识到没有办法将Popup相对于屏幕定位,只相对于包含它的Visual。
答案 2 :(得分:0)
有许多方法可以获得WPF Window
之外的鼠标位置的屏幕坐标。不幸的是,您需要添加引用以使用其中任何一个,但 可能。您可以在@ FredrikHedblad对How do I get the current mouse screen coordinates in WPF?问题的回答中找到它们的示例。巧合的是,在您提出这个问题前几天就回答了这个问题,并在21分钟内放弃了。