在WPF中设置Mouseposition

时间:2011-12-14 22:31:25

标签: c# wpf kinect

  

可能重复:
  Move mouse with c#

我要用Kinect手势替换鼠标,但我找不到为WPF应用设置鼠标位置的方法。

提前致谢

汤姆

2 个答案:

答案 0 :(得分:7)

使用.NET BCL是不可能的。但是,如果您真的需要它,可以在SetCursorPos中使用原生User32.dll

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

正如其他人最有可能指出的那样,您可以使用System.Windows.Forms实现相同的功能,但是在开发WPF应用程序时,请使用DllImport


如果您要在应用程序中使用Kinect传感器,我会亲自编写自定义WPF控件而不是尝试覆盖系统鼠标:

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

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

如果您有兴趣,我可以通过Kinect会议上传/通过电子邮件发送幻灯片。他们读得很好。

答案 1 :(得分:4)

您可以使用Cursor.Position中的System.Windows.Forms属性进行此操作。

正如MSDN documentation for Cursor.Position

所示
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上执行平台调用。