如何精确跟踪鼠标坐标而不跳过

我需要一种比这个代码更精确地跟踪鼠标坐标的方法。 如果你运行这个代码并且移动你的鼠标的速度非常快,或者快速改变方向,坐标可能看起来如下:50,然后是40.当鼠标移动得很快时,它不会跟踪指针所覆盖的所有点,就像这个例如有10个坐标跳过。 如果我慢慢地移动,没有问题。 我需要一种方法来跟踪所有的指针坐标,没有跳过。 我已经尝试使用全局钩子的代码项目上的示例,具有相同的结果。 我怎样才能做到这一点? 是否有registry的变化,可以使强制窗口来跟踪所有的坐标。 可能吗? 我宁愿用C#来做,但也会考虑其他的方式。 谢谢。

private void Form1_MouseMove(object sender, MouseEventArgs e) { if (num != 1) { listBox1.Items.Add(eXToString()); } } 

鼠标指针不会移动每个像素,如果快速移动鼠标,它将在事件之间移动一大堆像素。 硬件根本不会为鼠标移动的每个像素发送一个信号,而是报告自上次报告以来鼠标移动的距离。

而不是试图跟踪鼠标的位置,使用Cursor.Clip属性来限制鼠标的移动:

 var rect = someControl.RectangleToScreen(new Rectangle(Point.Empty, someControl.ClientSize)); Cursor.Position = new Point(rect.Left + rect.Width / 2, rect.Top + rect.Height / 2); Cursor.Clip = rect; 

使用一个空的矩形释放鼠标:

 Cursor.Clip = new Rectangle(0, 0, 0, 0); 

你确定鼠标是否覆盖了从A到B的所有坐标?

来自OS的鼠标输入被采样,谨慎的数据。 这意味着鼠标指针可以跳过坐标,就像你看到的一样。

如果数据不够高,考虑对数据进行插值。

IIRC,你可以提高鼠标的采样率。 不记得如何。 我确定网络可以。

这些年来,我曾多次提到这个问题。 你通常不能告诉鼠标事件监听器告诉你鼠标经过的每一个像素。 即使操作系统可能会跳过大屏幕,如果你移动鼠标足够快。 唯一可靠的方法就是根据鼠标位置的历史来绘制点。 简单的方法是在当前点和最后一个点之间划一条线。 更复杂的解决方案将涉及存储最后几个坐标,并使用正弦/正切数学来绘制平滑的曲线。