2010-06-11 23 views
1

在我正在开发的Silverlight应用程序中,我需要跟踪鼠标的移动。我的问题是使用MouseMove事件,如果用户移动鼠标足够快(如果我添加列表中的每个点,我可以有(10,10)然后(20,20),我没有一个连续的点集)...)Silverlight MouseMove:在移动过程中发现丢失的点

我希望在移动过程中有鼠标移动的所有点。 你有什么想法吗?

回答

1

这不能有效地工作。 silverlight的mousemove事件等待操作系统发送带有坐标的信号。如果移动速度非常快,操作系统不会为其移动的每个点发射其事件。大多数OS执行无限循环,检查机器状态,如果这些循环很快,那么它可能会为每个点拾取鼠标移动。如果鼠标在0.001ms内从(1,1)移动到(20,20),操作系统可能会在(10,10)处调用事件,否则如果循环没有按时触发,它将根本不会。

您可以加快速度的方法是减少mousemove中的代码或使它们异步。

另一种方法是数学方法,根据您已收集的数据计算路径。

+1

好吧,我明白你的观点是有道理的。为了在这里使用Bresenham的线算法找到所有的点,我找到了一篇好文章:http://www.codeproject.com/KB/graphics/bresenham_revisited.aspx – japf 2010-06-11 06:30:05