Java GlassPanel清晰透明的背景

时间:2015-06-28 15:26:52

标签: java swing rendering transparency glasspane

我想在GlassPane上渲染一些东西。问题是,如果我移动渲染的线条,先前渲染的像素仍然具有相同的颜色。 我不能使用g.clearRect,因为它不会清除透明度。

这就是我的渲染代码:

Graphics2D g2 = (Graphics2D) g;

    for(LinePath line : lines)
    {
        for(int i = 0; i < line.points.length; i+=2)
        {
            if(i != 0)
            {
                g.drawLine((int)line.points[i-2],(int)line.points[i-1],(int)line.points[i],(int)line.points[i+1]);
            }
        }
    }


    //Clearing alpha
    Area area = new Area();
    // This is the area that will filled...
    area.add(new Area(new Rectangle2D.Float(0, 0, getWidth(), getHeight())));
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.0f));
    g2.fill(area);

结果如下: enter image description here

1 个答案:

答案 0 :(得分:1)

clearRect应该可以使用,但在使用之前必须重置alpha合成。

例如:

g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0F));