2012-01-10 3 views
2

リモートで制御していない間にマウスが停止した瞬間がありましたが、リモートでカーソルを制御します。今は、マウスが止まる瞬間を得ることができません。なぜなら、それは決して止まらないからです。ちょっと動いています。私の考えは、いくつかのオフセットピクセルを追加することです。たとえば5 pxの場合、マウスが5 pxの周りを移動しても、マウスが停止したと表示されます。C#WPFでのマウスの動きからピクセルノイズを除去する方法

これは、マウスが停止する瞬間をキャプチャするコードの一部です。タイマーを起動します。私はここにタイマーコードを入れなかった。

mouse = new MouseKeyboardActivityMonitor.MouseHookListener(new GlobalHooker()); 
mouse.MouseMove += (sd, args) => 
{ 
     movingCount = 0; 
     mouseLeft = args.X; //set the window.left to mouseLeft before showing it 
     mouseTop = args.Y; //set the window.top to mouseTop before showing it 
}; 

mouse.Enabled = true; 

マウスが停止しないで約5pxのノイズを移動する瞬間を得るためのあなたのアイデアは何ですか?あなたはシステムパラメータMinimumVerticalDragDistanceとMinimumHorizo​​ntalDragDistanceを使用することができます

:ここにコメントで要求されたよう

+2

マウス移動がAの間に十分な大きさだった場合は、これらの値を決定するために使用することができるSystemParameters.MinimumVerticalDragDistance/SystemParameters.MinimumHorizo​​ntalDragDistance を使用することができますDragDropは「移動済み」とカウントします。私はこれがあなたの環境にも使用できると確信しています。利点は、この値がウィンドウにフックアップされていることです。 – SvenG

+0

あなたの情報をお寄せいただきありがとうございます。いくつかのリンクやコード例がありますか?それでは、私はこの分野で新しいので、使い方を理解することができます:S ... Thanks again ... – Samet

答えて

1

は一例です。

はこちらをご覧ください:http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.minimumverticaldragdistance.aspx

を彼らが最初にドラッグが本当に始めている場合や、ユーザーが唯一のマウスポインタの非常に小さな距離をクリックして移動していたかどうかを検出するために、ドラッグアンドドロップ操作での閾値として使用されています。

ここでは使用することができる方法です:

private Point _lastPosition; 

private void Window_MouseMove(object sender, MouseEventArgs e) 
{ 
    Point currentPosition = e.GetPosition(this); 

    if (IsMovementBigEnough(_lastPosition, currentPosition)) 
    { 
    // .. do stuff here 
    } 

    _lastPosition = currentPosition; 
} 

public bool IsMovementBigEnough(Point previousMousePosition, Point currentPosition) 
{ 
    return (Math.Abs(currentPosition.X - previousMousePosition.X) >= SystemParameters.MinimumHorizontalDragDistance || 
     Math.Abs(currentPosition.Y - previousMousePosition.Y) >= SystemParameters.MinimumVerticalDragDistance); 
} 

HTH

+0

ありがとうあなたはコードのために...今はすべてが混乱しています。なぜなら、私のコードでは、マウスが停止したときに "コード内の引数"を持つタイマーを起動していたので、今は自分のコードで取得できないからです。おそらく、このコードは動作しません...:S – Samet

関連する問題