2012-04-18 143 views
0

我想创建一个BufferedImage实例,其中包含一个特定颜色的圆角矩形,并且在其他地方都是透明的。如何将动态创建的BufferedImage实例的背景设置为透明?

我使用下面的代码来创建图像

private BufferedImage createChromImage() { 
    BufferedImage I = new BufferedImage(350, 20, ColorSpace.TYPE_RGB); 
    Graphics2D g2 = I.createGraphics(); 

    g2.setPaint(new GradientPaint(0, 0, Color.DARK_GRAY, 100, 
       100, Color.BLUE, false)); 

    g2.fillRoundRect(0, 0, 350, 20, 10, 10); 

    return I; 
} 

我结束了在黑色背景上一个圆角矩形,有没有一种方式,我可以得到它的透明背景。我怀疑它会需要一个不同的ColorSpace设置,但我不知道哪个..非常感谢任何帮助。

+0

您的'BufferedImage'没有alpha通道,请尝试使用'TYPE_INT_ARGB'。 – Torious 2012-04-18 16:06:31

回答

2

在不支持透明度的图像中不能有透明背景。 RGB是24位图像,没有透明度。相反,你想使用BufferedImage.TYPE_INT_ARGB作为BufferedImage构造函数的参数:这将给你一个alpha通道来玩,这将允许透明。