Исчезновение части графики в Java Swing

Я пытаюсь реализовать анимацию постепенного появления/исчезновения в качании. Я использую JPanel, в котором нет никаких компонентов. Он полностью рисуется методом paintComponent().

Теперь в одной из частей этой JPanel я хочу реализовать анимацию постепенного появления/исчезновения. Когда я пытался использовать AlphaComposite, анимация запускается для всего JPanel.

Могу ли я ограничить эту анимацию небольшой обрезанной областью на этой панели?

Graphics2D g2d = (Graphics2D) g;
    g2d.setComposite(AlphaComposite.getInstance(
            AlphaComposite.XOR, alpha));

person Deepak Chaudhry    schedule 03.05.2012    source источник
comment
Чтобы быстрее получить помощь, опубликуйте SSCCE.   -  person Andrew Thompson    schedule 04.05.2012


Ответы (3)


Пробовали ли вы использовать графический объект (например, прямоугольник, круг и т. д.) для постепенного появления/исчезновения? Таким образом, он не будет запускаться для всей панели.

Удачи!

person Byron Voorbach    schedule 03.05.2012

Возможно, но этого может быть труднее достичь, чем оно того стоит. Создайте JComponent размера, который вы хотите анимировать (или затухать), добавьте его к вашему JPanel и вызовите repaint() для вашего меньшего компонента во время анимации вместо большего JPanel.

person Nate    schedule 03.05.2012

Вы можете использовать setClip() перед рисованием, чтобы ограничить область затухания. Предположим, вам нужен небольшой затухающий прямоугольник. Используя класс Area, создайте 2 фигуры. Пересечение исходного клипа и прямоугольника затухания и вычитание (вычитание прямоугольника затухания из исходного клипа).

Вызовите super.paintComponent() дважды с двумя разными клипами. Для второй краски вы можете установить свой альфа-фильтр.

person StanislavL    schedule 04.05.2012