2013-12-18 127 views
3

我知道如何使用以下使光標移動到的位置:使鼠標光標移動到某個位置?

Cursor.Position = New Point(XPosition, YPosition) 

但這樣做只是導致其瞬間移動那裏,我想它從當前位置移動到新位置以設定的速度。 - 當前和新的位置之間的距離 - EG

1:

速度會受兩個因素來確定。以5px/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.. 

這將需要數如果語句檢查是否當前的X/Y位置是在/目標X下的/ Y位置。

有什麼辦法可以讓代碼更乾淨嗎?

+0

看看這個庫:http://www.codeproject.com/Articles/28064 /全球 - 鼠標和鍵盤 - 庫 –

回答

3

這聽起來像您需要的線的參數等式:0和1之間

x = x1 + (x2-x1)*t

其中
x1 =啓動x,
x2 =端x和
t =時間。

所以如果你想光標移動從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

編輯:
在這一行動Ideone(不要使用VB的時候,所以它不是完美的)
http://ideone.com/c9iLTA