如何获取WPF中的当前鼠标屏幕坐标?

如何在屏幕上获得当前的鼠标协调? 我只知道得到mousePosition元素的Mouse.GetPosition() ,但是我想得到不使用元素的协调。

跟进瑞秋的答案。
这里有两种方法可以在WPF中获得鼠标屏幕坐标。

1.使用Windows窗体。 添加对System.Windows.Forms的引用

 public static Point GetMousePositionWindowsForms() { System.Drawing.Point point = Control.MousePosition; return new Point(point.X, point.Y); } 

2.使用Win32

 [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool GetCursorPos(ref Win32Point pt); [StructLayout(LayoutKind.Sequential)] internal struct Win32Point { public Int32 X; public Int32 Y; }; public static Point GetMousePosition() { Win32Point w32Mouse = new Win32Point(); GetCursorPos(ref w32Mouse); return new Point(w32Mouse.X, w32Mouse.Y); } 

或者在纯WPF中使用PointToScreen 。

你想要相对于屏幕或应用程序的坐标吗?

如果在应用程序中,只需使用:

 Mouse.GetPosition(Application.Current.MainWindow); 

如果没有,我相信你可以添加一个对System.Windows.Forms的引用,并使用:

 System.Windows.Forms.Control.MousePosition; 

如果你在不同的分辨率,有多个显示器的计算机上尝试了很多这些答案,你可能会发现它们不能可靠地工作。 这是因为您需要使用转换来获取相对于当前屏幕的鼠标位置,而不是由所有显示器组成的整个查看区域。 像这样的东西…(其中“this”是一个WPF窗口)。

 var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFromDevice; var mouse = transform.Transform(GetMousePosition()); public System.Windows.Point GetMousePosition() { System.Drawing.Point point = System.Windows.Forms.Control.MousePosition; return new System.Windows.Point(point.X, point.Y); }