Graphics クラス
- [内容]
- グラフィックスツールの集まりからなっているクラスです
- [主なメソッド]
- public abstract void clearRect(int x, int y, int width, int height)
- 指定された矩形を背景色で塗りつぶす
- public abstract void clipRect(int x, int y, int width, int height)
- 指定された矩形と現在のクリッピング領域の共通部分を,新たなクリッピング領域とする
- public abstract void copyArea(int x, int y, int width, int height, int dx, int dy)
- 指定された矩形領域を,dx,dy だけ相対的に離れた位置にコピーする
- public abstract Graphics create()
- public Graphics create(int x, int y, int width, int height)
- 現在の Graphics オブジェクトをコピーし,新しい Graphics オブジェクトを生成する.引数を記述すると,原点が (x, y) になり,また,クリップ領域が指定された矩形との共通部分になる.
- public void draw3DRect(int x, int y, int width, int height, boolean raised)
- 3 次元的輪郭を持った矩形を位置 (x, y) (左上の角の座標)に描く.raised は,矩形を浮き上がらせるか,または,沈ませるかを決める.
- public abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
- 円または楕円の一部(弧)を位置 (x, y) (左上の角の座標)に描く.角度の単位は度であり,x 軸の正方向を 0 度とする.
- public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer)
- public abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
- イメージを指定された位置 (x, y) に描く.ImageObserver は,Image オブジェクトが生成されるとき,イメージに関する情報を受け取るためのインタフェースである.また,widtht と height は,矩形の大きさを示し,この領域内に描かれる.
- public abstract void drawLine(int x1, int y1, int x2, int y2)
- 点 (x1, y1) と (x2, y2) を結ぶ直線を描く
- public abstract void drawOval(int x, int y, int width, int height)
- 円または楕円を位置 (x, y) (左上の角の座標)に描く
- public abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
- public void drawPolygon(Polygon p)
- 与えられた点を頂点とする多角形を描く(参照: Polygon クラス)
- public abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
- 与えられた点を結ぶ直線を描く
- public void drawRect(int x, int y, int width, int height)
- 矩形を位置 (x, y) (左上の角の座標)に描く
- public abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
- 角を丸めた矩形を位置 (x, y) (左上の角の座標)に描く
- public abstract void drawString(String str, int x, int y)
- 文字列を位置 (x, y) に出力する.位置は,ほぼ文字列の左下の角の位置に相当する
- public void fill3DRect(int x, int y, int width, int height, boolean raised)
- 内部を現在の色で塗りつぶした 3 次元的輪郭を持った矩形を位置 (x, y) (左上の角の座標)に描く.raised は,矩形を浮き上がらせるか,または,沈ませるかを決める.
- public abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
- 内部を現在の色で塗りつぶした円または楕円の一部(弧)を位置 (x, y) (左上の角の座標)に描く.角度の単位は度であり,x 軸の正方向を 0 度とする.
- public abstract void fillOval(int x, int y, int width, int height)
- 内部を現在の色で塗りつぶした円または楕円を位置 (x, y) (左上の角の座標)に描く
- public abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
- public void fillPolygon(Polygon p)
- 内部を現在の色で塗りつぶした与えられた点を頂点とする多角形を描く(参照: Polygon クラス)
- public abstract void fillRect(int x, int y, int width, int height)
- 内部を現在の色で塗りつぶした矩形を位置 (x, y) (左上の角の座標)に描く
- public abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
- 内部を現在の色で塗りつぶした角を丸めた矩形を位置 (x, y) (左上の角の座標)に描く
- public FontMetrics getFontMetrics()
- 現在のフォントのフォントメトリックを返す.
- public abstract void setClip(int x, int y, int width, int height)
- public abstract void setClip(Shape clip)
- クリップ領域を指定した矩形に設定する.Shape は,Polygon や Rectangle のスーパークラスである(参照: Polygon クラス,Rectangle クラス)
- public abstract void setColor(Color c)
- 色を設定する
- public abstract void setFont(Font font)
- フォントを設定する
- public abstract void setPaintMode()
- 論理ピクセル操作機能を上書きモードにする(現在の色が上書きされる).
- public abstract void setXORMode(Color c1)
- 論理ピクセル操作機能を XOR モードにする(現在の色と指定された色との XOR がとられる)
- public abstract void translate(int x, int y)
- 点 (x, y) に原点を移動する
- [使用例]
- プログラム例は,Graphics クラスの各メソッド等の使用例です.ここをクリックするとアプレット版が表示されます(プログラム).なお,アプレット版に関しては,画像( fig0.gif )の読み込み方が異なる点に注意してください.

- プログラム例は,バックグラウンドの色,及び,表示するフォントの種類,スタイル,大きさ,色を変化させた例です.また,FontMetrics クラスのメソッドを使用してフォントに関する情報を得,文字列の出力位置を制御しています.ここをクリックするとアプレット版が表示されます(プログラム).

- このプログラム例では,Graphics クラスを利用して図(円)を描いてアニメーションを作成しています.ここをクリックして表示してみてください.
- プログラム例は,ボールの落下をシミュレーションしたものです.ボールをクッリクすると停止し,もう一度クリックすると再び動き出します.この例においても,上の例と同様に,一定時間毎に異なる位置にボールを描くことによってアニメーションを作成しています.
- プログラム例は,上と同様に,ボールの落下をシミュレーションしたものです.ただし,この例では,ボールのイメージ( ball.gif )を読み込み,それを一定時間毎に異なる位置に表示することによってアニメーションを作成しています.外見的には,上で示したアニメーションと同じですが,多少画面のちらつきを感じると思います.ちらつきをなくすためには,次の例で述べるように,バッファリング処理が必要です.
- プログラム例は,文字が回転しながら移動する非常に単純なアニメーションです.上の例と同様,外部から画像を読み込んでいますが,異なる画像を順に表示しています.ここをクリックして,表示してみてください.
- 簡単なアニメーションの場合は問題になりませんが,一度に描く量が多くなったり,描画速度を速くすると画面のちらつきが発生するようになります.下の図では,背景の上に小さな円をランダムに動かしています.通常の方法(プログラム例1)で描くとかなり画面がちらつきますが,バッファリングを利用する(プログラム例2)と,ちらつきはほとんど無くなります.なお,プログラム例2では,MediaTracker を利用してイメージを読み込んでいます.アプレット版に関しては,以下に示す箇所をクリックしてください.
- バッファ無し(プログラム)
- バッファ有り(プログラム)

- もう少し複雑な例を示します.プログラム例は,Java によってホームページにおけるトップページを作成した例です.最初に表示された状態では,すべての図形が停止していますが,徐々に各図形が動き出します.まず,上部にある文字の部分をクリックすると,
- 加速: 動きが少しずつ速くなります
- 加速: 動きが少しずつ遅くなります
- 総合情報学部: 総合情報学部への入り口に移動します
- といった動作を行います.
- 図形部分をクリックすると,動きが止まり,対応する説明が表示されます.説明を閉じると再び動き出し,説明を閉じずに文字や図形以外の部分をクリックすると説明に対応する図形が削除された後,他の図形は再び動き出します.また,文字や図形以外の部分をクリックすると,動きが停止します.停止した状態で,文字や図形以外の部分をクリックすると,再び動き出します.最初に設定されている速度では,各図形をクリックすることは難しいかと思いますので,減速又は停止した後にクリックしてみてください.
- [参照]
- Font, FontMetrics