Заставить курсор мыши перемещаться в позицию?
Я знаю, как заставить курсор перемещаться в положение, используя следующее:
Cursor.Position = New Point(XPosition, YPosition)
Но, делая именно это, он мгновенно перемещается туда, и я хотел бы, чтобы он перемещался из текущей позиции в новую позицию с заданной скоростью.
Скорость будет определяться двумя факторами:
1 - Расстояние между текущей и новой позицией - EG. Переход от 0X до 500X со скоростью 5px/ с по сравнению с 0X до 1000X со скоростью 10px/ с).
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 ответ
Похоже, вам нужно параметрическое уравнение для линии:
x = x1 + (x2-x1)*t
гдеx1
= начало х,x2
= конец х иt
= время между 0 и 1.
так что если вы хотите, чтобы курсор двигался от x1(10,20)
в x2(30,60)
более 10 секунд...
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