我知道如何使用以下内容将光标移动到某个位置:
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位置。
有什么方法可以让代码更干净吗?
答案 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