【问题标题】:Make mouse cursor travel to a position?让鼠标光标移动到某个位置?
【发布时间】:2014-01-06 12:15:28
【问题描述】:

我知道如何使用以下方法使光标移动到某个位置:

Cursor.Position = New Point(XPosition, YPosition)

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

速度将由两个因素决定:

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

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 位置。

有什么方法可以让代码更简洁?

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多