1

我需要在我的 VB 绘图程序中更改图片框上的鼠标速度。

有没有办法在更改系统设置的情况下专门针对对象执行此操作?

4

1 回答 1

0

您可以修改指针为每个鼠标事件移动的距离,而不是更改速度。这可能不是一个永久的解决方案,如果 UI 线程在其他方面很忙,它可能会导致不稳定的移动,但是这种技术很简单,你可以在比我写这一段的时间更短的时间内编写它。

  1. 在 MouseMove 的事件处理程序中,获取鼠标指针移动的距离 (X,Y)。
  2. 使用某个缩放值 (nX, nY) 设置 Cursor.Position,其中 n 确定鼠标指针移动的距离(以及速度)。

换句话说,您将鼠标移动增量视为一个向量,并将该向量乘以一个标量值以修改速度。

http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.position.aspx

根据需要,在事件处理程序中使用布尔标志来确保设置 Cursor.Position 不会触发另一个,即使只是因为将 Cursor.Position 设置为一个新点。

您可能会发现对所有距离使用相同的比例因子是不合适的。例如,将移动乘以因子 2 对于短距离可能是可以的,但对于大增量来说太快了,在这种情况下,查找表或函数将计算所需的因子。

如果您需要降低移动速度,这种技术可能会表现不佳,因为它可能会导致鼠标指针向后跳到其最近移动距离的一小部分。

于 2013-09-21T18:16:18.713 回答