Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
The
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 | 描述 |
---|---|
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.
This program illustrates the effects of various compositing style and alpha combinations.
. contains the full code for this applet.Composite.java
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);