为JPanel添加透明渐变?

时间:2012-08-27 09:03:45

标签: java image swing transparency jpanel

我使用paintComponent()方法在JPanel上绘制了几个形状。最后一步是在顶部添加透明的白色渐变。

我有这个:

1

我希望得到这样的东西:

2

我尝试使用GradientPaint方法,但它似乎对我来说根本不适用。当我拨打g.setPaint(new GradientPaint(...))时,它似乎无法覆盖现有的像素。

如果有人想看看我在做什么,可以在this Pastebin找到代码的SSCCE。

2 个答案:

答案 0 :(得分:3)

如果将这些作为paintComponent(Graphics)的最后一行添加,似乎会产生效果。

// now we have set a paint, DO SOMETHING WITH IT!
g.fillRect(0, 0, getWidth(), getHeight());

结果

enter image description here

答案 1 :(得分:2)

在绘制渐变之前尝试应用AlphaComposite

g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));

您可以尝试的另一件事是在渐变中使用带有alpha值的颜色......

LinearGradientPaint lgp = new LinearGradientPaint(
    startPoint, endPoint, new float[]{...}, 
    new Color[] {
        new Color(255, 255, 255, 0),
        new Color(255, 255, 255, 128),
        new Color(255, 255, 255, 0),
    });