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

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

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

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

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут