该程序的目标是记录鼠标滚轮旋转的速度,长度和幅度。我可以在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();
}
}
答案 0 :(得分:0)
使用MouseWheelEventArgs.Timestamp
属性。
您的事件处理程序将如下所示:
只需使用秒表来判断滚动是否已“停止”。