WPF限制鼠标移动消息频率

时间:2012-12-19 19:58:48

标签: wpf frequency mousemove

除了使用某种计时器滚动我自己的方法之外,是否有更好的更通用的方法来限制鼠标移动消息的频率?

我正在对鼠标移动消息进行一些非常密集的处理,并希望将频率限制为每秒30次更新。目前看来我可以每秒收到数百个。

2 个答案:

答案 0 :(得分:2)

根据我的理解,每次鼠标移动时都会触发MouseMove事件;这是每次指针的x,y坐标都改变了。因此,我不相信有一种方法可以限制事件触发的消息/秒,因为这很简单地取决于移动鼠标的频率。我建议的是,如果只有某些时候你想要触发move事件,你可以在这些时候添加和删除你的事件处理程序。非常欢迎您继续寻找实现所需功能的方法,如果您这样做,我会非常有兴趣看到它。 Here是关于MouseMove事件的MSDN文章,这可能是一个开始寻找的好地方。祝你好运!

答案 1 :(得分: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....
            }
        }
    }

当然你必须在某处开始秒表......