2011-12-14 40 views

回答

4

您可以使用System.Windows.Forms這個發現Cursor.Position財產。

由於上演示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調用。

+0

你有一個好主意,但通常WPF應用程序應儘可能遠離System.Windows.Forms。 – Xcalibur37 2011-12-15 01:38:56

7

使用.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會議的幻燈片。他們是一個很好的閱讀。