2011-12-14 12 views
2

可能性の重複:
Move mouse with c#WPFでMousepositionを設定

私はKinectのジェスチャーで私のマウスを交換するつもりですが、私はWPFのためmousepositionを設定する方法を見つけることができませんアプリ。事前に

おかげ

トム

答えて

4

あなたはこのためSystem.Windows.Formsで見つかったCursor.Positionプロパティを使用することができます。 MSDN documentation for Cursor.Positionに実証されているように

:あなたがWindowsフォームのこの外側を行うために探している場合は

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); 
} 

、あなたはがUser32のSetCursorPos上のプラットフォーム呼び出しを行うことができます。

+0

そこには良いアイデアがありますが、通常WPFアプリは可能な限りSystem.Windows.Formsから離れるべきです。 – Xcalibur37

+1

それ以上の研究をしてみました。あなたは正しいです。あなたが提案した2つの方法以外のやり方は、より優雅なやり方があるようには見えません。あなたのために+1してください。 – Xcalibur37

+0

WinFormsとWPFを混在させたり、名前空間を混ぜたりしないように、これをラップすることをお勧めします。 – Krythic

7

.NET BCLを使用することはできません。しかし、あなたが本当にそれを望むなら、ネイティブSetCursorPosUser32.dllに使うことができます。他の人が最も可能性が高いと指摘れるようにWPFアプリケーションを開発する場合、あなたはしかし、System.Windows.Formsを使用して同じことを達成することができます

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

は使用DllImportを好みます。


アプリケーションでのKinectセンサーを使用しようとしている場合のように、私は個人的に、システムのマウスを上書きしようとするよりも、カスタムWPFコントロールを記述します。あなたは、ユーザーの意図を示すについて慎重に検討する必要が

  • Kinectでは、例えば、ユーザがボタンの上にマウスを置いて行動する前にタイマーを表示させるオプションを選択することができます。
  • 画面上の位置を表すカスタムビジュアルを使用したい場合、従来のカーソルでは十分ではありません。

今年の初めに行ったX360 Kinectカンファレンスでは、ほとんどの半分がユーザーの操作を管理することに専念していました。これは、ポイントアンドクリックの簡単な操作とは異なります。

興味があれば、Kinectカンファレンスのスライドをアップロード/ Eメールで送信できます。彼らは良い読書です。

関連する問題