2017-04-06 22 views

答えて

4

異なる時点でパネルのBufferedImageを作成し、イメージをファイルに保存することができます。

このための基本的なロジックは次のようになります。

BufferedImage image = new BufferedImage(panel.getWidth(), panel.getHeight(), BufferedImage.TYPE_INT_RGB); 
Graphics2D g2d = image.createGraphics(); 
panel.print(g2d); 
g2d.dispose(); 
ImageIO.write(...); 

上記の機能を実現コンビニエンスメソッドのためScreen Imageクラスをチェックしてください。

もちろん、フレームごとに完全に新しいイメージが必要なので、これはあまり効率的ではありません。

+0

ダブルバッファリングを伴わないので、 'paint'の代わりに' print'や 'printAll'を使うほうがいいでしょう。画面上にコンポーネントが実現されていなければ例外を投げません。 ) – MadProgrammer

+0

ダブルバッファを使わない@MadProgrammerは意味があります。 (コード変更)。私は、塗装の問題があるにもかかわらずコンポーネントが実現しない場合、Exception(プラットフォームの違い?)に問題はありませんでした。基本的には、コンポーネントのサイズが(0、0)なので、塗りつぶすものはありません。 ScreenImageクラスは、レイアウトコードを呼び出してサイズを処理します。 – camickr

+0

私は 'NullPointerException'でそれを持っていましたが、それはおそらく親に全く追加されていないという事実と関係しているので、ダブルバッファの設定に問題がありました。 P – MadProgrammer

関連する問題