在WPF中设置鼠标位置

本文关键字:鼠标 位置 设置 WPF | 更新日期: 2023-09-27 18:17:58

我打算用Kinect手势代替鼠标,但是我找不到一种方法来设置WPF应用的鼠标位置。

在WPF中设置鼠标位置

使用。net BCL是不可能的。然而,如果你真的想要它,你可以在User32.dll中使用原生SetCursorPos

[DllImport("User32.dll")]
private static extern bool SetCursorPos(int x, int y);

正如其他人很可能指出的那样,您可以使用System.Windows.Forms实现相同的目标,但是在开发WPF应用程序时更倾向于使用DllImport


如果你打算在你的应用程序中使用Kinect传感器,我个人会写一个自定义的WPF控件,而不是试图覆盖系统鼠标:

  • 你必须仔细考虑用Kinect显示用户意图,例如,选择一个选项,你会让用户悬停在按钮上,并在行动前显示计时器。
  • 你想有一个自定义的视觉来表示屏幕上的位置,传统的光标是不够的。

在我今年早些时候参加的X360 Kinect大会上,几乎有半天的时间致力于管理用户体验,因为它不同于简单的点击互动。

如果你感兴趣,我可以上传/电子邮件从Kinect会议的幻灯片。它们是一本很好的读物。

您可以使用System.Windows.Forms中的Cursor.Position属性来完成此操作。

Cursor.Position的MSDN文档所示:

private void MoveCursor()
{
   // Set the Current cursor, move the cursor's Position,
   // and set its clipping rectangle to the form. 
   this.Cursor = new Cursor(Cursor.Current.Handle);
   Cursor.Position = new Point(Cursor.Position.X - 50, Cursor.Position.Y - 50);
   Cursor.Clip = new Rectangle(this.Location, this.Size);
}

如果你想在Windows窗体之外做到这一点,你可以在User32的SetCursorPos上做一个平台调用。