首页 文章

为JPanel添加透明渐变?

提问于
浏览
2

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

我有这个:

1

我希望得到这样的东西:

2

我似乎对我起作用了 . 当我调用 g.setPaint(new GradientPaint(...)) 时,似乎根本无法绘制现有像素 .

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

2 回答

  • 3

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

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

    结果

    enter image description here

  • 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),
        });
    

相关问题