【发布时间】:2011-04-30 06:03:17
【问题描述】:
我拥有通过 C# 代码移动和单击鼠标所需的所有代码,但我不想将鼠标位置设置为 X 和 Y;那会看起来很生涩。相反,我希望在 Z 秒内从点 X1, Y1 平滑过渡到点 X2, Y2。类似于关键帧。
我正在寻找类似这样的方法:
public void TransitionMouse(int x, int y, double durationInSecs)
它只会在durationInSecs 秒内将鼠标从当前位置平滑地移动到x 和y。我有一个函数叫做:
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));
}
}
【问题讨论】:
标签: c# transition smooth keyframe