## Componer Gráficos

La clase AlphaComposite encapsula varios estilos de composición, que determinan cómo se dibujan los objeto solapados. Un AlphaComposite también puede tener un valor alpha que especifica el grado de transpariencia: 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 renderizadoa 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 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, 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.
Clear (CLEAR) | Si los pixels de la fuente y del destino se solapan, los pixels del área solapada se borrarán.

To change the compositing style used by Graphics2D, you create an AlphaComposite object and pass it into the setComposite method.

### Ejemplo: Composite

> Este programa ilustra los efectos de varios combinaciones de estilos de composición y valores de alpha.

> Esta es una imagen del GUI del applet. Para ajecutar el appler, 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 especifican 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 selecciona 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 son copiados en la pantalla, por eso el atributo composite es configurado al contexto Graphics2D para el BufferedImage:

    BufferedImage buffImg = new BufferedImage(w, h,
                                BufferedImage.TYPE_INT_ARGB);
    Graphics2D gbi = buffImg.createGraphics();
    ...
    gbi.setComposite(ac);

Ozito