AlphaComposite class encapsulates various compositing
styles, which determine how overlapping objects are rendered. An
AlphaComposite can also have an alpha value that specifies
the degree of transparency: alpha = 1.0 is totally opaque,
alpha = 0.0 totally transparent (clear).
AlphaComposite supports most of the standard Porter-Duff
compositing rules shown in the following table.
| Compositing Rule | Description |
|---|---|
Source-over (SRC_OVER)
|
If pixels in the object being rendered (the source) have the same location as previously rendered pixels (the destination), the source pixels are rendered over the destination pixels. |
Source-in (SRC_IN)![]() |
If pixels in the source and the destination overlap, only the source pixels in the overlapping area are rendered. |
Source-out (SRC_OUT)![]() |
If pixels in the source and the destination overlap, only the source pixels outside of the overlapping area are rendered. The pixels in the overlapping area are cleared. |
Destination-over (DST_OVER)![]() |
If pixels in the source and the destination overlap, only the source pixels outside of the overlapping area are rendered. The pixels in the overlapping area are not changed. |
Destination-in (DST_IN)![]() |
If pixels in the source and the destination overlap, the alpha from the source is applied to the destination pixels in the overlapping area. If the alpha = 1.0, the pixels in the overlapping area are unchanged; if the alpha is 0.0, pixels in the overlapping area are cleared. |
Destination-out (DST_OUT)![]() |
If pixels in the source and the destination overlap, the alpha from the source is applied to the destination pixels in the overlapping area. If the alpha = 1.0, the pixels in the overlapping area are cleared; if the alpha is 0.0, the pixels in the overlapping area are unchanged. |
Clear (CLEAR)![]() |
If the pixels in the source and the destination overlap, the pixels in the overlapping area are cleared. |
To change the compositing style used by the
Graphics2D class, create an AlphaComposite object and pass it into the
setComposite method.
Composite.java.
contains the full code for this applet.
A new AlphaComposite object ac
is constructed by calling AlphaComposite.getInstance
and specifying the desired compositing rule.
AlphaComposite ac =
AlphaComposite.getInstance(AlphaComposite.SRC);
When a different compositing rule or alpha value is selected,
AlphaComposite.getInstance is called again, and the new
AlphaComposite is assigned to ac. The selected alpha is applied in addition to
the per-pixel alpha value and is passed as a second parameter to
AlphaComposite.getInstance.
ac = AlphaComposite.getInstance(getRule(rule), alpha);
The composite attribute is modified by passing the
AlphaComposite object to Graphics 2D
setComposite. The objects are rendered into a
BufferedImage and are later copied to the screen, so the
composite attribute is set on the Graphics2D context for
the BufferedImage:
BufferedImage buffImg = new BufferedImage(w, h,
BufferedImage.TYPE_INT_ARGB);
Graphics2D gbi = buffImg.createGraphics();
...
gbi.setComposite(ac);