Java透明度:Graphics2D.setComposite(...,alpha)与Color(...,alpha)

时间:2013-06-18 23:09:39

标签: java transparency

我想知道在Java中使用透明度时Graphics2D.setComposite(..., alpha)Graphics2D.setColor(new Color(..., alpha))之间是否存在差异?当使用两者的组合时,它们如何相互影响,例如

Graphics2D.setComposite(..., 0.5f)
Graphics2D.setColor(new Color(..., 0.5f))

似乎结果不是0.5的透明度,而是更像0.25。有没有建议使用前面提到的方法之一?

1 个答案:

答案 0 :(得分:3)

Graphics2D.setComposite(..., 0.5f)会影响应用后绘制到Graphics上下文的所有内容。这包括基元和图像。

Graphics2D.setColor(new Color(..., 0.5f))只会影响原始绘画,其他任何东西都会画完全不透明。

如果你在50%透明的Graphics上下文中绘制50%透明的颜色,那么你就是正确的,这将导致颜色看起来是25%透明的。两者不会相互抵消,但会复合。

这样想。

@ 100%不透明度,颜色为50%不透明 @ 75%不透明度,颜色减少25%,使其不透明度为37.5% @ 50%不透明度,颜色减少50%,使其25%不透明
@ 25%不透明度,颜色减少75%,使其不透明度为12.5%