グラフィック描画の流れ


今回は、プログラムの中からさまざまな図形を描画する方法について説明しましょう。描画を行うには、描画のための機能もですが、それ以前に覚えておきたいことがあります。それは「描画の仕組み」です。

画面に何かを描画する。それは単に「図形を描く命令を実行する」ということではありません。プログラムがどのようにして画面に何かを描画するか、その基本的な仕組みを理解するということなのです。なぜなら、そのことがわからなければ「どういう状況のときに、そこにどうプログラムを用意すれば望んだ図形が描かれるか」ということがわからないからです。

AWTでは表示の更新が必要になるとrepaint→update→paintとメソッドが呼び出されていきます。


AWTのコンポーネントでは、表示が変更されたりコンポーネントが移動やリサイズされるなど「画面表示を更新し最新の状態を表示する」という必要が生じたとき、そのコンポーネントの「repaint」というメソッドを呼び出します。このrepaintは、可能な限り速やかに「update」メソッドを呼び出すという働きを持ちます。

updateメソッドは、コンポーネントに関する必要な装飾描画(コンポーネントに必要な描画。例えば背景を所定の色で塗りつぶすなど)を行いコンポーネントを描画します。そして作業が終了した後に「paint」メソッドを呼び出します。このpaintの処理が終了し、初めて「再描画の処理」は完了するわけです。

この「repaint」→「update」→「paint」という基本の流れをしっかり頭に入れておきましょう。これがわかれば、描画に関する基本的な扱いがわかってきます。例えば、コンポーネントの表示を最新の状態にしたいと思ったらどうすればいいか? それには「repaint」メソッドを呼び出せばいいことがわかりますね。また、コンポーネントに何かの表示をつけたしたい時には? これは「paint」メソッドを定義し、そこに描画の処理を用意すればいいことがわかります。そうすれば必要に応じてrepaint/update/paintとメソッドが呼び出され、最終的に必要な描画がなされるわけなのですから。