• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaのpaintComponentについて)

JavaのpaintComponentについて

このQ&Aのポイント
  • Swingを使用して描画処理を行う際に、paintComponentの引数(Graphics g)が毎回初期化されることに困っています。
  • 一般的な描画処理では、簡単な描画では問題ありませんが、大きなデータや頻繁な更新を行う場合にラグが生じる可能性があります。
  • 効率的な処理方法として、前に描画したデータを保存し、新たな描画を行う方法があるのか疑問です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#161640
noname#161640
回答No.1

Graphicsは、毎回初期化されます。されないといけません。発想として、Graphicsを保管するというのは間違いです。Graphicsはつきつめると最終的にネイティブ環境のグラフィックスコンテキストを使うわけで、システムリソースを消費するこれらを保管するのはよくありません。 基本的には、画面に表示するグラフィック(BufferedImageなど)をインスタンスフィールドに保管するなどして用意しておき、ここに表示する内容を描画して、paintComponentでは単にこのイメージをGraphicsに描画するだけにする、というスタイルになると思います。要するに、 BufferedImageに必要な描画をする(このBufferedImageは保管されている) paintComponentでは、保管したBufferedImageを描画する。 このように2段階に分けて描画を行う、ということになります。実際の画面表示は1枚のBufferedImageを描画するだけですので高速です。 こうした手法は、オフスクリーンバッファと呼ばれます。これで検索してみると、いろいろな手法が見つかると思います。

lain_003
質問者

お礼

自前でデータをJPG等にしておいて、それを描画するという事ですね。 非常に参考になりました。お返事ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A