2

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

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

看起来结果不是0.5的透明度,而是更像0.25。是否有任何建议使用前面提到的方法之一?

4

1 回答 1

3

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

Graphics2D.setColor(new Color(..., 0.5f))只会影响图元的绘画,其他一切都将完全不透明。

您是对的,如果您将 50% 透明的颜色绘制到 50% 透明的Graphics上下文上,将导致颜色看起来是 25% 透明。两者不会相互抵消,而是会复合。

这样想吧。

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

于 2013-06-18T23:43:19.907 回答