让鼠标光标移动到一个位置?

时间:2013-12-18 10:51:01

标签: vb.net automation cursor mouse cursor-position

我知道如何使用以下内容将光标移动到某个位置:

Cursor.Position = New Point(XPosition, YPosition)

但这样做会导致它立即移动到那里,我希望它能以一定的速度从当前位置移动到新位置。

速度取决于两个因素:

1 - 当前位置与新位置之间的距离 - EG。以0px / s的速度从0X变为500X,而以10px / s的速度从0X变为1000X。

2 - 到达目标位置的有限时间范围。

我只知道一种混乱的方式,这类似于:

If Cursor.Position.X < XPosition Then 
    Dim Speed as Integer = XPosition - Cursor.Position.X
    While Cursor.Position.X < XPosition
        Cursor.Position = New Point(Cursor.Position.X + Speed, Blah..)
    End While
End If
'Etc..

这将需要几个If语句来检查当前X / Y位置是否超出目标X / Y位置。

有什么方法可以让代码更干净吗?

1 个答案:

答案 0 :(得分:3)

听起来你需要一条直线的参数方程:

x = x1 + (x2-x1)*t

其中
x1 =开始x,
x2 =结束x和
t = 0到1之间的时间。

所以如果您希望光标在10秒内从x1(10,20)移动到x2(30,60) ......

1秒内:
      x = 10 + (30-10)*.1 ; x = 12
      y = 20 + (60-20)*.1 ; y = 24
2秒钟:
      x = 10 + (30-10)*.2 ; x = 14
      y = 20 + (60-20)*.2 ; y = 28
3秒内:
      x = 10 + (30-10)*.3 ; x = 16
      y = 20 + (60-20)*.3 ; y = 32

修改
意思是这个在行动(不要经常使用VB,所以它不完美)
http://ideone.com/c9iLTA