2012-12-19 40 views
2

比我自己的滾動方法帶有某種計時器等,有沒有限制你多久得到鼠標移動消息的更好更通用的方式?WPF限制鼠標移動消息的頻率

我做的一個關於鼠標移動的消息頗有些精深加工,並希望頻率限制在像30更新第二。目前看來我可以收到數百秒的時間。

回答

2

從我的理解,每次鼠標移動MouseMove事件火災;那就是每次指針的x,y座標被改變。因此,我不認爲有一種方法可以限制事件觸發的消息/秒,因爲這僅僅取決於您移動鼠標的頻率。我會建議的是,如果只有某些時候您想要移動事件觸發,那麼您可以在這些時間添加和移除您的事件處理程序。您非常歡迎繼續尋找實現您所需功能的方法,如果您願意,我會非常樂於看到它。 Here是關於MouseMove事件的MSDN文章,可能是開始查看的好地方。祝你好運!

2

那麼,這來得晚,但我通過檢查秒錶的經過時間,並呼籲我的內部函數只蜱每一個具體的數字來解決類似的問題。間隔的定義或多或少地憑經驗確定,但也許可以通過改進此方法以毫秒爲單位獲得更準確的結果。在我的情況下,解決方案就像一個魅力。

public static Stopwatch stopwatch = new Stopwatch(); 

    public static void OnMouseMove(object sender, RoutedEventArgs e) 
    { 
      if (stopwatch.ElapsedTicks % 10L == 0L) 
      { 
       // do the heavy work here.... 
      } 
     } 
    } 

當然,你必須從某個地方開始計時...