2012-05-03 11 views
1

私はフェードイン/フェードアウトのアニメーションをスイングで実装しようとしています。 JPanelにコンポーネントがないJPanelを使用しています。これはpaintComponent()メソッドによって完全に描画されます。Java Swingのグラフィックの一部をフェードアウト

このJPanelの一部で、フェードイン/フェードアウトアニメーションを実装したいと思います。 AlphaCompositeを使ってみると、JPanel全体でアニメーションがトリガーされています。

このアニメーションは、そのパネルの小さな切り取られた領域で制限できますか?

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

すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –

答えて

1

フェードイン/アウトにグラフィックオブジェクト(矩形、円形など)を使用してみましたか?そうすれば、完全なパネルでは起動されません。

幸運を祈る!

1

おそらく、それは達成するのが難しいかもしれません。アニメーション(またはフェード)したいサイズのJComponentを作成し、JPanelに追加し、アニメーション中に小さなコンポーネントを呼び出すrepaint()をJPanelの代わりに呼び出します。

1

ペイントする前にsetClip()を使用して、フェード領域を制限することができます。 小さなフェージング矩形が必要だとします。 Areaクラスを使用して、2つの図形を作成します。元のクリップの交点とフェードの矩形と減算(元のクリップからフェードする矩形を引く)。

super.paintComponent()を2つの異なるクリップで2回呼び出します。 2番目のペイントでは、アルファフィルタを設定できます。

関連する問題