У меня есть все необходимые коды для перемещения и щелчка мышью по коду C#, но я не хочу просто устанавливать положение мыши в X
и Y
; это будет выглядеть рывком. Вместо этого я хочу иметь плавный переход от точки X1, Y1
к пункту X2, Y2
за 2 секунды. Подобно keyframing.C# плавное движение объекта
Я ищу способ, подобный следующему:
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));
}
}
-1 сурова для меня, но "Cursor.Position.X + = vector.X" и "Cursor.Position.Y + = vector.Y" не будет работать. – Bolu
Извините, вы правы. Я изменил его. –
Работает как очарование! Благодаря! – Entity