Java Graphics2D是否在下次调用paintComponent()时重置合成?为什么?

Java Graphics2D是否在下次调用paintComponent()时重置合成?为什么?,java,swing,transparency,graphics2d,paintcomponent,Java,Swing,Transparency,Graphics2d,Paintcomponent,Graphics2D是否在每次调用paintComponent()时重置合成?为什么 比如说, public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D)g; System.out.println(((AlphaComposite)g2.getComposite()).getAlpha()); //printing alpha value before setting composition

Graphics2D是否在每次调用paintComponent()时重置合成?为什么

比如说,

public void paintComponent(Graphics g)

    {
    Graphics2D g2 = (Graphics2D)g;
    System.out.println(((AlphaComposite)g2.getComposite()).getAlpha()); //printing alpha value before setting composition
    g.drawImage(background,0,0,500,500,null);
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
    g.setColor(Color.RED);
    g.fillOval(x-100,y-100,200,200);
    System.out.println(((AlphaComposite)g2.getComposite()).getAlpha()); //printing alpha value after setting composition
}
当多次调用paintComponent()时,上面的代码将打印以下内容

1.0

0.5

1.0

0.5

1.0

0.5

1.0

0.5


这是否意味着graphics2D在paintComponent()之后重置构图,为什么必须这样做?

是;你的结果是预期的。其中,默认的组合
应用
AlphaComposite.SRC\u OVER
规则,该规则“相当于
setComposite(new AlphaComposite.SrcOver)
”注意
AlphaComposite.SrcOver
的alpha值为
1.0f

这是JFrame还是小程序