我想知道在Java中使用透明度时Graphics2D.setComposite(..., alpha)
和Graphics2D.setColor(new Color(..., alpha))
之间是否存在差异?当使用两者的组合时,它们如何相互影响,例如
Graphics2D.setComposite(..., 0.5f)
Graphics2D.setColor(new Color(..., 0.5f))
似乎结果不是0.5的透明度,而是更像0.25。有没有建议使用前面提到的方法之一?
答案 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%