Componer Gráficos
La clase AlphaComposite encapsula varios estilos de composición, que
determinan cómo se dibujan los objetos solapados. Un AlphaComposite
también puede tener un valor alpha que especifica el grado de transparencia:
alpha = 1.0 es totalmente opaco, alpha = 0.0 es totalmente
transparente. AlphaComposite soporta la mayoria de los estandares de
composición como se muestra en la siguiente tabla.
Source-over (SRC_OVER)
|
Si los pixels del objeto que está siendo renderizado (la fuente) tienen la misma
posición que los pixels renderizados préviamente (el destino), los pixels de la fuente se
renderizan sobre los pixels del destino. |
Source-in (SRC_IN)
|
Si los pixels de la fuente y el destino se solapan, sólo se renderizarán los pixels
que haya en el área solapada. |
Source-out (SRC_OUT)
|
Si los pixels de la fuente y el destino se solapan, sólo se renderizarán los pixels
que haya fuera del área solapada. Los pixels que haya en el área solapada se
borrarán. |
Destination-over (DST_OVER)
|
Si los pixels de la fuente y del destino se solapan, sólo se renderizarán los pixels de
la fuente que haya fuera del área solapada. Los pixels que haya en el área solapada no se
cambian. |
Destination-in (DST_IN)
|
Si los pixels de la fuente y del destino se solapan, el alpha de la fuente se aplica
a los pixels del área solapada del destino. Si el alpha = 1.0, los pixels del área
solapada no cambian; si alpha es 0.0 los pixels del área solapada se borrarán. |
Destination-out (DST_OUT)
|
Si los pixels de la fuente y del destino se solapan, se aplica el alpha de la fuente
a los pixels del área solapada del destino. Si el alpha = 1.0, los pixels del área
solapada no cambian; si alpha es 0.0 los pixels del área solapada se borrarán. |
Clear (CLEAR)
|
Si los pixels de la fuente y del destino se solapan, los pixels del área solapada se
borrarán. |
Para cambiar el estilo de composición usado por Graphics2D, creamos
un objeto AlphaComposite y lo pasamos al método
setComposite.
Ejemplo: Composite
Este programa ilustra los efectos de varias combinaciones de estilos de composición y
valores de alpha.
Esta es una imagen del GUI del applet. Para ajecutar el applet, pulsa
sobre ella. El applet aparecerá en una nueva ventana del navegador.
Composite.java
contiene el código completo de este applet.
Se ha construido un nuevo objeto AlphaComposite
ac llamando a AlphaComposite.
getInstance y especificando las reglas de composición deseadas.
AlphaComposite ac =
AlphaComposite.getInstance(AlphaComposite.SRC);
Cuando se selecciona una regla de composición o un valor alpha, se llama de nuevo a
AlphaComposite.getInstance, y el nuevo
AlphaComposite se asigna a ac. El alpha
seleccionado se aplica al valor alpha de cada pixel y se le pasa un segundo parámetro a
AlphaComposite.getInstance.
ac = AlphaComposite.getInstance(getRule(rule), alpha);
El atributo composite se modifica pasando el objeto AlphaComposite a
Graphics 2D setComposite. Los objetos son
renderizados dentro de un BufferedImage y más tarde se copian en
la pantalla, por eso el atributo composite se configura con el contexto
Graphics2D para el BufferedImage.
BufferedImage buffImg = new BufferedImage(w, h,
BufferedImage.TYPE_INT_ARGB);
Graphics2D gbi = buffImg.createGraphics();
...
gbi.setComposite(ac);