Canvas, рисование мышью - Java

Узнай цену своей работы

Формулировка задачи:

Добрый вечер, товарищи. Собственно, не так давно я решил познакомиться поближе с JavaFX, и в качестве пробного проекта выбрал простую рисовалку. Столкнулся с проблемой, которую не могу решить.
        myCanvas.setOnMouseDragged((MouseDragEvent) -> {
            if(rootLayoutEventController.pencil){
                gc.beginPath();
                gc.moveTo(MouseDragEvent.getX(), MouseDragEvent.getY());
                gc.lineTo(MouseDragEvent.getX(), MouseDragEvent.getY());
 
                gc.stroke();
                gc.moveTo(MouseDragEvent.getX(), MouseDragEvent.getY());
                gc.closePath();
            }
        });
gc, соответственно, GraphicsContext. Проблема вся в том, что если я рисую через Path, т.е. начинаю с beginPath() и заканчиваю с closePath(), то рисование идёт точками, но сохраняется фигура, и, естественно, при новом вызове данного события не обновляется всё старое(если я почистил), а если я использую как-то так(ниже), то идёт чёткая линия за курсором, но при повторном вызове события, естественно, от последней точки до текущей идёт прямая линия(если вставить gc.moveTo перед gc.lineTo, то точки снова появляются)
        myCanvas.setOnMouseDragged((MouseDragEvent) -> {
            if(rootLayoutEventController.pencil){
                gc.lineTo(MouseDragEvent.getX(), MouseDragEvent.getY());
 
                gc.stroke();
                gc.moveTo(MouseDragEvent.getX(), MouseDragEvent.getY());
            }
        });
Думал как-то обработать через setOnMouseDragEntered, но никакого толку это не принесло. Есть идеи?

Решение задачи: «Canvas, рисование мышью»

textual
Листинг программы
gc.moveTo(MouseEvent.getX(), MouseEvent.getY());

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5