У меня есть весь необходимый код для перемещения и щелчка мышью с помощью кода C #, но я не хочу просто устанавливать положение мыши на X
и Y
;это будет выглядеть вяло.Вместо этого я хочу плавно перейти от точки X1, Y1
к точке X2, Y2
в течение Z секунд.Похож на ключевой кадр.
Я ищу метод, похожий на этот:
public void TransitionMouse(int x, int y, double durationInSecs)
Он просто плавно переместит мышь из текущей позиции в x
и y
вdurationInSecs
секунд.У меня есть функция с именем:
public void MoveMouse(int x, int y)
, которая перемещает мышь к x
, y
немедленно.
EDIT
Спасибо за помощь, ребята!Вот готовый и проверенный код:
[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));
}
}