2012-05-03 3 views
1

스윙에서 페이드 인/페이드 아웃 애니메이션을 구현하려고합니다. 구성 요소가없는 JPanel을 사용하고 있습니다. 그것은 paintComponent() 메소드에 의해 완전히 그려진다.Java 스윙에서 그래픽의 일부가 사라짐

이제이 JPanel 부분 중 하나에서 페이드 인/페이드 아웃 애니메이션을 구현하고 싶습니다. AlphaComposite를 사용해 보았을 때 전체 JPanel에 대한 애니메이션이 실행 중입니다.

이 애니메이션을 해당 패널의 작은 잘린 영역에서 제한 할 수 있습니까?

Graphics2D g2d = (Graphics2D) g; 
    g2d.setComposite(AlphaComposite.getInstance(
      AlphaComposite.XOR, alpha)); 
+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

1

페이드 인/아웃을 위해 그래픽 오브젝트 (사각형, 원 등)를 사용해 보셨습니까? 이렇게하면 전체 패널에서 트리거되지 않습니다.

행운을 빈다.

1

아마도 그럴 가치가있는 것보다 달성하기가 더 어려울 수 있습니다. 애니메이션으로 만들려는 크기 (또는 페이드)로 JComponent을 만들고 JPanel에 추가 한 다음 애니메이션 중에 더 작은 부품 인 JPanel 대신에 repaint()을 호출해야합니다.

1

그림을 그리기 전에 setClip()을 사용하여 페이드 영역을 제한 할 수 있습니다. 작은 페이딩 사각형을 원한다고 가정하십시오. Area 클래스를 사용하여 2 개의 도형을 만듭니다. 원래 클립의 교차 및 페이드 아웃 직각 및 뺄셈 (원본 클립에서 페이드 아웃 사각형을 뺍니다).

두 개의 다른 클립으로 super.paintComponent()를 두 번 호출하십시오. 두 번째 페인트의 경우 알파 필터를 설정할 수 있습니다.

관련 문제