我已经有了通过C#代码移动和点击鼠标所需的所有代码,但我不想仅将鼠标位置设置为X
和Y
,那样看起来很生硬。相反,我希望在Z秒内从点X1,Y1
到点X2,Y2
实现平滑过渡。类似于关键帧技术。
我正在寻找类似于以下方法:
public void TransitionMouse(int x, int y, double durationInSecs)
该函数将平稳地将鼠标从当前位置移动到 x
和 y
,在 durationInSecs
秒内完成。该函数称为:
public void MoveMouse(int x, int y)
这将立即移动鼠标到 x
,y
。
编辑
感谢各位的帮助!以下是完成且经过测试的代码:
[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);
public void TransitionMouseTo(double x, double y, double durationSecs)
{
double frames = durationSecs*100;
PointF vector = new PointF();
PointF mousePos = Cursor.Position;
vector.X = (float)((x - mousePos.X) / frames);
vector.Y = (float)((y - mousePos.Y) / frames);
for (int i = 0; i < frames; i++)
{
SetCursorPos((int)(mousePos.X += vector.X), (int)(mousePos.Y += vector.Y));
Thread.Sleep((int)((durationSecs / frames) * 1000.0));
}
}