Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中设置鼠标位置_C#_Wpf_Kinect - Fatal编程技术网

C# 在WPF中设置鼠标位置

C# 在WPF中设置鼠标位置,c#,wpf,kinect,C#,Wpf,Kinect,可能重复: 我打算用Kinect手势替换我的鼠标,但我找不到为WPF应用程序设置鼠标位置的方法 提前谢谢 Tom您可以使用System.Windows.Forms中的Cursor.Position属性进行此操作 如图所示: 如果您希望在Windows窗体之外执行此操作,则可以在User32上执行平台调用。使用.NET BCL是不可能的。但是,如果确实需要,可以在User32.dll中使用本机SetCursorPos [DllImport("User32.dll")] private stati

可能重复:

我打算用Kinect手势替换我的鼠标,但我找不到为WPF应用程序设置鼠标位置的方法

提前谢谢


Tom

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

如图所示:


如果您希望在Windows窗体之外执行此操作,则可以在User32上执行平台调用。

使用.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会议的幻灯片。它们是一本好书

你有一个好主意,但是如果可能的话,WPF应用程序通常应该远离System.Windows.Forms。对此做了更多的研究。你说得对。除了你建议的两种方法之外,似乎没有其他更优雅的方法了+我建议将其包装在一个函数中,这样您就不会将WPF与Winforms混合,也不会与命名空间冲突。
[DllImport("User32.dll")]
private static extern bool SetCursorPos(int x, int y);