Как я могу «стереть» то, что я нарисовал на холсте Java Graphics2D, не удаляя то, что находится за этим?

#java #swing #awt #graphics2d #jslider

#java #swing #awt #graphics2d #jslider

Вопрос:

Я пишу программу, которая рисует определенный график (на основе параметров, заданных через JSlider) в системе координат. Проблема, с которой я сталкиваюсь, заключается в том, что моя система координат также нарисована на этом холсте, и если бы я использовал метод «clearRect», это удалило бы как график, от которого я хочу избавиться, чтобы нарисовать новый при обновлении JSlider, так и систему координат. Есть ли способ «заблокировать» систему координат, чтобы она не удалялась или что-то в этом роде?

Комментарии:

1. Просто нарисуйте в paintComponent(Graphics g) и в окружающей JPanel сетке.

2. Нарисуйте это в режиме XOR и просто перерисуйте, когда захотите, чтобы это исчезло.

Ответ №1:

Не рисуйте непосредственно на холсте. Создайте список объектов, таких как система координат и objects. Вы можете манипулировать списком (добавлять или удалять объекты) и repaint холстом, когда что-то меняется.

Каждый объект в списке может реализовать интерфейс Drawable с помощью метода, скажем draw(). Итак, список будет List<Drawable> . На холсте paint() просмотрите все объекты и вызовите draw().