Java GlassPanel清晰透明背景
Java GlassPanel clear transparent background
我想在我的 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);
结果如下:
clearRect
应该可以工作,但您必须在使用前重置您的 alpha 合成。
例如:
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f));
我想在我的 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);
结果如下:
clearRect
应该可以工作,但您必须在使用前重置您的 alpha 合成。
例如:
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f));