在WPF中设置鼠标位置
本文关键字:鼠标 位置 设置 WPF | 更新日期: 2023-09-27 18:17:58
我打算用Kinect手势代替鼠标,但是我找不到一种方法来设置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上做一个平台调用。