2

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

我有这个:

1

我想得到这样的东西:

2

我尝试使用 GradientPaint 方法,但它似乎对我来说根本无法正常工作。当我打电话时g.setPaint(new GradientPaint(...)),它似乎根本无法覆盖现有像素。

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

4

2 回答 2

3

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

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

结果

在此处输入图像描述

于 2012-08-27T09:25:12.580 回答
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),
    });
于 2012-08-27T09:14:47.223 回答