2011-07-21 2 views
0

Я хотел бы нарисовать фигуру на Graphics2D и покрасить ее часть, если она пересечет определенный диапазон. Мне удалось сделать это, нарисуя 2 фигуры в BufferedImage (исходная форма и область, которая вызовет изменение цвета), используя AlphaComposite и AlphaComposite.SRC_IN. Проблема в том, что если холст прокручивается, экран становится ломающимся, так как каждый раз, когда вы вызываете метод рисования, создается буферное изображение.Alphablending без буферизованного изображения

Есть ли способ достижения такого же эффекта (перекрытие 2 фигуры, только область перекрытия только 2-й формы) без использования объекта буферизованного изображения?

Приветствие, Max

ответ

1

Я не уверен, что я undertand полностью, что вы пытаетесь сделать, но вы не должны создавать буферизированное изображение каждый раз, когда метод краски называется; только когда что-то изменяется в отображаемых объектах.

+0

Хорошо, позвольте мне уточнить это немного больше. Форма, которую я хотел бы отобразить, представляет собой график. График заполнен синим цветом. Всякий раз, когда график превышает определенное значение, он должен быть окрашен в красный цвет. Я хотел бы сначала нарисовать график и наложить его на прямоугольник, представляющий область, в которой область заполнения графика становится красной. Метод paint вызывается каждый раз при перемещении полосы прокрутки. – Max

+0

Я не вижу, как какое-либо из того, что вы сказали в своем комментарии, не позволяет вам внедрить совет мудреца Мориса, чтобы это повлияло. «Кэш-экземпляр« BufferedImage ». Измените их, когда это необходимо». –

+0

Почему вы не рисуете прямоугольник вместо создания bufferedimage? –

Смежные вопросы