Программа рисования простых линий Java - PullRequest
2 голосов
/ 02 октября 2011

Я хочу создать простое Java-приложение для рисования только линий.

Моя программа теперь такая;

Пользователь может нарисовать все, перетаскивая свою мышь, но к тому времени, когда он отпустит палец, я удалил все с экрана и рисую линию относительно первых координат мыши и последних координат мыши.

Однако, поскольку каждый раз, когда я очищал экран, пользователь может рисовать только одну линию. Если я не очищаю экран, появляются линии, но также кривые и т. Д., Которые создаются при перетаскивании пользователем мыши.

Как мне найти решение этой проблемы?

Спасибо.

Ответы [ 4 ]

5 голосов
/ 02 октября 2011

Простой способ решить вашу проблему - сохранить состояние в программе. Каждый раз, когда рисуется линия, сохраняйте ее в ArrayList пар точек. Когда пользователь успешно рисует одну линию, сохраните начальную и конечную точки этой линии в ArrayList. Каждый раз, когда пользователь рисует другую линию, добавляйте эту пару точек в ArrayList. Затем, когда пришло время нарисовать «все линии», очистите экран, затем используйте цикл и нарисуйте одну линию для каждой сохраненной пары точек.

Где-то в вашей программе есть класс, у которого время жизни равно «как чертежу», так и «пока приложение работает». Это хорошее место, чтобы держать государство.

2 голосов
/ 02 октября 2011
  1. При наведении мыши сохраните положение.
  2. При наведении курсора мыши создайте новый объект линии (определите свой собственный класс) с точками вверх и вниз.
  3. Удалитесохраненная мышь вниз (так как она вам больше не нужна!)
  4. Добавьте новый объект линии в список линий, которые вы определяете
  5. Когда вы рисуете, всегда очищайте все и рисуйте каждую линию, которую высохранены.
  6. По желанию, если вы нажмете кнопку мыши, также проведите линию между текущей сохраненной позицией мыши и текущей позицией мыши.
1 голос
/ 02 октября 2011

Индивидуальные подходы к рисованию предлагают два подхода.Первый, чтобы сохранить / перерисовать строки, как уже предложено здесь.Второй подход - рисовать непосредственно в BufferedImage.

1 голос
/ 02 октября 2011

Сохраните начальную и конечную точки линий в объекте, который помещается в расширяемую коллекцию, такую ​​как ArrayList. Когда придет время рисовать, нарисуйте все линии в списке.

...