Compositing Graphics
AlphaComposite类封装了各种合成样式,这些样式决定了如何呈现重叠的对象。 AlphaComposite
也可以具有用于指定透明度的 alpha 值:alpha = 1.0 完全不透明,alpha = 0.0 完全透明(透明)。 AlphaComposite
支持下表中所示的大多数标准 Porter-Duff 合成规则。
Compositing Rule | Description | |
---|---|---|
源码(SRC_OVER ) | ||
如果要渲染的对象(源)中的像素与先前渲染的像素(目标)具有相同的位置,则源像素将在目标像素上渲染。 | ||
来源(SRC_IN ) | 如果源像素和目标像素重叠,则仅渲染重叠区域中的源像素。 | |
源输出(SRC_OUT ) | 如果源像素和目标像素重叠,则仅渲染重叠区域之外的源像素。 | 重叠区域中的像素被清除。 |
目标(DST_OVER ) | 如果源像素和目标像素重叠,则仅渲染重叠区域之外的源像素。重叠区域中的像素不变。 | |
目标位置(DST_IN ) | 如果源像素和目标像素中的像素重叠,则来自源像素的 alpha 会应用于重叠区域中的目标像素。如果 alpha = 1.0,则重叠区域中的像素不变。 | 如果 alpha 为 0.0,则清除重叠区域中的像素。 |
目标输出(DST_OUT ) | 如果源像素和目标像素中的像素重叠,则来自源像素的 alpha 会应用于重叠区域中的目标像素。如果 alpha = 1.0,则清除重叠区域中的像素;如果 alpha 为 0.0,则重叠区域中的像素不变。 | |
清除(CLEAR ) | 如果源像素和目标像素重叠,则会清除重叠区域中的像素。 |
若要更改Graphics2D类使用的合成样式,请创建AlphaComposite
对象并将其传递到setComposite
方法中。
Example: Composite
该程序说明了各种合成样式和 alpha 组合的效果。
Note:
如果看不到 Servlets 正在运行,则需要至少安装Java SE 开发套件(JDK)7版本。
Composite.java。包含此 Servlets 的完整代码。
通过调用AlphaComposite.getInstance
并指定所需的合成规则来构造新的AlphaComposite
对象* ac *。
AlphaComposite ac =
AlphaComposite.getInstance(AlphaComposite.SRC);
选择不同的合成规则或 alpha 值时,将再次调用AlphaComposite.getInstance
,并将新的AlphaComposite
分配给* ac *。除了每个像素的 alpha 值外,还会应用所选的 alpha,并将其作为第二个参数传递给AlphaComposite
。 getInstance
。
ac = AlphaComposite.getInstance(getRule(rule), alpha);
通过将AlphaComposite
对象传递到Graphics 2D
setComposite
来修改 Composite 属性。对象被渲染为BufferedImage
,随后被复制到屏幕,因此在Graphics2D
上下文中为BufferedImage
设置了复合属性:
BufferedImage buffImg = new BufferedImage(w, h,
BufferedImage.TYPE_INT_ARGB);
Graphics2D gbi = buffImg.createGraphics();
...
gbi.setComposite(ac);