Displaying Graphics with Graphics2D |
TheAlphaComposite
class encapsulates various compositing styles, which determine how overlapping objects are rendered. AnAlphaComposite
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.
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
Graphics2D
, you create anAlphaComposite
object and pass it into thesetComposite
method.Example: Composite
This program illustrates the effects of various compositing style and alpha combinations.A new
AlphaComposite
object ac is constructed by callingAlphaComposite
.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 newAlphaComposite
is assigned to ac. The selected alpha is applied in addition to the per-pixel alpha value and is passed as a second parameter toAlphaComposite
.getInstance
.ac = AlphaComposite.getInstance(getRule(rule), alpha);The composite attribute is modified by passing the
AlphaComposite
object toGraphics 2D
setComposite
. The objects are rendered into aBufferedImage
and are later copied to the screen, so the composite attribute is set on theGraphics2D
context for theBufferedImage
:BufferedImage buffImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); Graphics2D gbi = buffImg.createGraphics(); ... gbi.setComposite(ac);You can find the full code in
Composite.java
and an HTML file that includes the applet inComposite.html
.
Displaying Graphics with Graphics2D |