Проблемы с координатами после вызова robot.mouseMove (x, y) - PullRequest
0 голосов
/ 20 июня 2019

В настоящее время я работаю над приложением 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);

Я ожидаю, что сетка координат останется "постоянной", даже если я перемещу мышь, иначе какой смысл?Может быть, я что-то упускаю или это просто глупая ошибка, но я не могу от нее избавиться ... Если бы кто-нибудь мог мне помочь, я был бы очень благодарен.

...