【问题标题】:WPF Limit mouse move message frequencyWPF限制鼠标移动消息频率
【发布时间】:2012-12-19 19:58:48
【问题描述】:

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

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

【问题讨论】:

    标签: wpf frequency mousemove


    【解决方案1】:

    据我了解,每次鼠标移动时都会触发 MouseMove 事件;即每次更改指针的 x,y 坐标时。因此,我不相信有办法限制事件触发的消息/秒,因为这只是由您移动鼠标的频率决定的。我的建议是,如果您只希望在某些时候触发 move 事件,您可以在这些时候添加和删除您的事件处理程序。非常欢迎您继续寻找实现所需功能的方法,如果您这样做,我会非常有兴趣看到它。 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....
                  }
              }
          }
      

      当然你必须在某个地方启动秒表......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-04
        • 2020-08-18
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多