如何在WPF

时间:2015-06-17 14:29:58

标签: wpf time mousewheel

该程序的目标是记录鼠标滚轮旋转的速度,长度和幅度。我可以在MouseWheel事件中记录振幅。但我的困惑是我可以记录多久/多快?

我现在的做法是在窗口中实现MouseWheel事件。然后在另一个调度计时器的处理程序中,我检查mousewheel事件是否持续一段时间(比如1s),我记录时间。这是正确的方法吗?

   private void Window_MouseWheel(object sender, MouseWheelEventArgs e)
    {
        scrollVal += (Math.Abs(e.Delta) / limitScrollSpeed);
        scroll_stopwatch.Reset();     //this makes small scrolls to be one bigger scroll
        scroll_stopwatch.Start();
        scrollRecord_stopwatch.Start();     
    }


    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        if (scroll_stopwatch.ElapsedMilliseconds >= clearScrollTimeMS)  
        {               

            scroll_stopwatch.Stop();
            scroll_stopwatch.Reset();
            scrollVal = 0;

            scrollRecord_stopwatch.Stop();
            scrollDuration = (scrollRecord_stopwatch.ElapsedMilliseconds - 1000) / 1000.0f;

            scrollRecord_stopwatch.Reset();                
        }
    }

1 个答案:

答案 0 :(得分:0)

使用MouseWheelEventArgs.Timestamp属性。

您的事件处理程序将如下所示:

  1. 记录第一个wheelevent的时间戳
  2. 继续运行轮三角洲的总和
  3. 当滚动停止时,将滚轮增量总和除以最后一个时间戳减去第一个时间戳。
  4. 只需使用秒表来判断滚动是否已“停止”。