2013-06-24 1 views
0

Graphics2D는 paintComponent()가 호출 될 때마다 컴포지션을 재설정합니까? 그리고 왜? 예를 들어Graphics2D는 paintComponent()가 다음에 호출 될 때 composititon을 재설정합니까? 그리고 왜?

,

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

0 paintComponent에()는, 왜 그렇게해야 않는 후1.0

0.5

1.0

0.5

이 조성물을 재설정 Graphics2D를 의미 하는가?

+0

이것은 JFrame 또는 애플릿입니다. – imulsion

답변

1

예; 당신의 결과는 예상 한 것입니다. Default Rendering Attributes 중에서 기본 구성 인 은 규칙을 적용합니다.이 규칙은 "setComposite(new AlphaComposite.SrcOver)과 같습니다." AlphaComposite.SrcOver의 알파는 1.0f입니다.