グラフィックスを扱う |
この節の最初のレッスンにあった 描画ページ で学習したように、AWT 描画システムはプログラムが描画できる時期と方法を制御し ている。 呼び出し中の Component の repaint() メソッドに応え、AWT はその Component の update() メソッドを起動して、Component がそれ自身を書き直すよう要求する。update() メソッドは (デフォルトで) 順に Component の paint() メソッドを起動していく。
このシステムでほかにも工夫がこらされている点は、AWT が update() を呼び出す代わりに paint() メソッドを直接呼び出す場合があること である。 これは、Component が最初に画面上に現れたり、他のウィンドウの後ろから手前に現 れたりするような外的刺激に AWT が反応した結果として、ほとんどの場合で発生す る。 paint() と update() については、このレッスンの後半 にある フラッシングを排除するで学習する。
Graphics オブジェクト
paint() と update() メソッドのただ 1 つの引数は Graphics オブジェクトである。 Graphics オブジェクトはあらゆる描画のキー的な存在である。 このオブジェクトは、プリミティブグラフィックス (ライン、矩形、テキストなど) およびイメージという、2 種類の基本的な描画をサポートする。 プリミティブグラフィックスについては グラフィックスプリミティブを使用するで、 イメージについては イメージを使用するで、それぞれ学習する。
Graphics オブジェクトは、プリミティブグラフィックスとイメージを画面に描画す るメソッドを提供するほか、現在の描画領域や現在の描画カラーのような状態を維持 することにより、描画のコンテキストを提供する。 クリッピング によって現在の描画領域を減らすことはできるが、描画領域 を増やすことはできない。このようにして、Graphics オブジェクトは Component が 固有の描画領域内でしか描画できないようにしている。 クリッピングについては、 update() メソッドを上書きするで学習する。
座標系
各 Component は固有の整数座標系をもっており、範囲はピクセル単位で (0, 0) か ら (幅 - 1, 高さ - 1) である。次の図に示すように、 Component の描画領域の左上隅は (0, 0) である。X 座標は右にいくほど大き くなり、Y 座標は下にいくほど大きくなる。
以下に、このレッスンの後の方で作成するアプレットを示す。 枠内の任意の領域をクリックすると、このアプレットは、クリックした場所にドット を描き、クリックの場所を示す文字列を表示する。
repaint() メソッドの 4 つの書式
プログラムは Component の repaint() メソッドを呼び出して、AWT がその Component の update() メソッドを呼び出すよう要求すること ができる。 ここで、repaint() メソッドの 4 つの書式について説明する。
- public void repaint()
- AWT に、できるだけ早く Component の update() メソッドを呼び 出すよう要求する。 これは repaint() の書式の中で最もよく使用される。
- public void repaint(long time)
- AWT に、今から time ミリ秒経過したときに Component の update() メソッドを呼び出すよう要求する。
- public void repaint(int x, int y, int width, int height)
- AWT に、できるだけ早く Component の update() メソッドを呼び 出し、そのコンポーネントの指定された部分だけをリペイントするよう要求する。
- public void repaint(long time, int x, int y, int width, int height)
- AWT に、今から time ミリ秒経過したときに Component の update() メソッドを呼び出し、そのコンポーネントの指定された部分 だけをリペイントするよう要求する。
グラフィックスを扱う |