В настоящее время я работаю над приложением Processing , которое перемещает указатель мыши по экрану, чтобы нарисовать несколько кругов.Последняя задача - автоматизировать рисование окружностей в краске (или других приложениях), и для этого нужно нажать левую кнопку мыши, переместить мышь и отпустить кнопку.Проблема в том, что когда я вызываю функцию robot.mouseMove(x,y)
, все показания координат на экране все перепутаны.
Для отладки проблемы, которую я проверял, если источник (у меня отображение 1920x1080)правильно в начале программы.Использование mouse = MouseInfo.getPointerInfo().getLocation();
, а затем println("X: " + mouse.x + "Y: " + mouse.y);
возвращает ожидаемые значения как X, так и Y. Проблема возникает после того, как я решил переместить курсор в ЛЮБУЮ другую позицию после этого.Например: robot.mouseMove(960,540);
(центральный экран) заставляет мышь двигаться, но не в правильном положении, поэтому напечатанные координаты X = 1199 ~ 1200 и Y = 674.
Вот фрагмент моего кода, гдеЯ перемещаю мышь:
r.mouseMove(startcircleX, startcircleY); //starting coordinates for the circle
r.keyPress(KeyEvent.VK_CONTROL); //series of keypress to activate the pen tool
r.keyPress(KeyEvent.VK_P);
r.keyRelease(KeyEvent.VK_P);
r.keyRelease(KeyEvent.VK_CONTROL);
r.mousePress(InputEvent.BUTTON1_DOWN_MASK); //left mouse press
for (step = 0; step <= maxstep; step++) { //number of points in the circle move
float t = 2 * PI * step / maxstep; //360°
int X = (int)(circleX + radius * cos(t)); //here I calculate the coordiantes for the movements
int Y = (int)(circleY + radius * sin(t));
r.mouseMove(X, Y);
}
r.mouseRelease(InputEvent.BUTTON1_MASK); //left mouse release
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_P);
r.keyRelease(KeyEvent.VK_P);
r.keyRelease(KeyEvent.VK_CONTROL);
Я ожидаю, что сетка координат останется "постоянной", даже если я перемещу мышь, иначе какой смысл?Может быть, я что-то упускаю или это просто глупая ошибка, но я не могу от нее избавиться ... Если бы кто-нибудь мог мне помочь, я был бы очень благодарен.