Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GlassPanel透明背景_Java_Swing_Rendering_Transparency_Glasspane - Fatal编程技术网

Java GlassPanel透明背景

Java GlassPanel透明背景,java,swing,rendering,transparency,glasspane,Java,Swing,Rendering,Transparency,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.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);
graphics2dg2=(Graphics2D)g;
用于(线路径线:线)
{
对于(int i=0;i
结果如下:
clearRect
应该可以工作,但在使用它之前必须重置alpha合成

例:


setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f))

为了更快地获得更好的帮助,请发布一个(最小完整可验证示例)或(简短、自包含、正确的示例)。是的,但是如何重置alpha?