2013-06-18 242 views
2

我想知道在Java中使用透明度时,实际上Graphics2D.setComposite(..., alpha)Graphics2D.setColor(new Color(..., alpha))之间是否有差异?它们在使用两者结合时如何相互影响Java透明度:Graphics2D.setComposite(...,alpha)与颜色(...,alpha)

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

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

回答

3

Graphics2D.setComposite(..., 0.5f)将影响所有涂在Graphics上下文后的所有东西。这包括基元和图像。

Graphics2D.setColor(new Color(..., 0.5f))只会影响原始画的绘画,每一样东西都会被绘成完全不透明的。

如果您将颜色透明度为50%的颜色绘制到透明度为50%的上​​下文中,则颜色看起来为25%透明,这是正确的。这两者不会相互抵消,但会复合。

想想这样。

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