1

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);

結果は次のとおりです。 ここに画像の説明を入力

4

1 に答える 1

1

clearRect動作するはずですが、使用する前にアルファ合成をリセットする必要があります。

元:

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

于 2015-06-29T06:27:06.190 に答える