Desvanecimiento de una parte de los gráficos en Java Swing

Estoy tratando de implementar la animación de aparición/desaparición gradual en swing. Estoy usando un JPanel que no tiene ningún componente. Está completamente dibujado por el método paintComponent().

Ahora, en una de las partes de este JPanel, quiero implementar la animación de aparición/desaparición gradual. Cuando intenté usar AlphaComposite, la animación se activa para todo JPanel.

¿Puedo limitar esta animación en una pequeña región recortada en ese panel?

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

preguntado el 03 de mayo de 12 a las 14:05

Para obtener una mejor ayuda antes, publique un SSCCE. -

3 Respuestas

¿Ha intentado usar un objeto Graphics (como un rectángulo, un círculo, etc.) para su entrada/salida gradual? De esa manera no se activará para el panel completo.

¡Buena suerte!

contestado el 03 de mayo de 12 a las 14:05

Quizás, pero eso puede ser más difícil de lograr de lo que vale. Crear un JComponent del tamaño que desea animar (o desvanecer), agréguelo a su JPanel, y haga que se llame a repaint () en su componente más pequeño durante la animación en lugar del más grande JPanel.

contestado el 03 de mayo de 12 a las 15:05

Puede usar setClip() antes de pintar para restringir el área de desvanecimiento. Supongamos que desea un pequeño rectángulo de desvanecimiento. Usando la clase Area crea 2 Formas. Intersección del clip original y el rectángulo de desvanecimiento y la resta (restar el rectángulo de desvanecimiento del clip original).

Llame a super.paintComponent() dos veces con 2 clips diferentes. Para la segunda pintura, puede configurar su filtro alfa.

contestado el 04 de mayo de 12 a las 06:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.