コンピュータ基礎II 通信授業課題2C 参考ページ



3. 基本的な線や図形の描画

○サンプル2

雛形のプログラム(GSample00.java)のコメントの文、
//ここから描画命令を追加
から
//ここまでに描画命令を追加
の間に線や図形を描画する命令を記述すると、ウィンドウにグラフィックを描画することができます。
例として以下のようなコードを入力すると実行結果は下の図のようになります。

Gsample01.java

**********************************************************************

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GSample01 extends JFrame {

	public GSample01() {

		setSize( 800, 600 );
		setTitle( "プログラムで絵を描こう" );

		addWindowListener( new WindowAdapter(){

			public void windowClosing( WindowEvent e ) {
				System.exit( 0 );
			}

		});

		GraphicJPanel jp = new GraphicJPanel();
		Container cp = getContentPane();
		cp.add( jp );
		setVisible( true );

	}

	public static void main( String[] args ) {

		JFrame w = new GSample01();

	}

	public class GraphicJPanel extends JPanel{

		public GraphicJPanel() {

			setBackground( Color.white );

		}

		public void paintComponent( Graphics g ) {


//ここから描画命令を追加



		g.setColor( new Color( 255, 51, 0 ) );
		g.drawLine( 100, 275, 700, 275 );
		g.setColor( new Color( 0x33, 0xcc, 0x00 ) );
		g.drawOval( 450, 270, 100, 100 );
		g.fillOval( 475, 295, 50, 50 );
		g.setColor( new Color( 0x3366ff ) );
		g.drawRect( 200, 200, 400, 200 );
		g.fillRect( 200, 200, 50, 50 );

//ここまでに描画命令を追加

		}

	}

}


**********************************************************************

GSample01.javaをコンパイルし、実行すると以下のような描画が行われます。

GSample01



g.drawLine( int x1, int y1, int x2, int y2 );
点 ( x1, y1 ) から点 ( x2, y2 ) まで直線を引きます。

Javaでは変数にはその型によっていくつかの種類があります。
int型は、整数を使用する変数の一つで、4byte(-2147483648〜+2147483647)の整数を表現することができます。上記の命令の読み方ですが、g.drawLineの引数に渡される4つの値は、すべて整数値でなければならないということです。
またJavaの座標系はウィンドウの左上を原点として右方向にxの値が増加し、下方向にyの値が増加するような座標系です。従って、g.drawLine( 100, 275, 700, 275 );とは、ウィンドウの左上から右に100pixel、下に275pixelの地点から、ウィンドウの左上から右に700pixel、下に275pixelの地点まで線を描くことになります。

d.drawOval( int x, int y, int width, int height );
点 ( x, y ) から、横幅width、縦幅heightの輪郭だけの楕円を描きます。

g.fillOval( int x, int y, int width, int height );
点 ( x, y ) から、横幅width、縦幅heightの塗りつぶされた楕円を描きます。

g.drawRect( int x, int y, int width, int height );
点 ( x, y ) から、横幅width、縦幅heightの輪郭だけの四角形を描きます。

g.fillRect( int x, int y, int width, int height );
点 ( x, y ) から、横幅width、縦幅heightの塗りつぶされた四角形を描きます。

g.setColor( new Color( 255, 0, 0 ) );
g.setColor( new Color( 0x00, 0x66, 0x00 ) );
g.setColor( new Color( 0xff00ff ) );
色はg.setColor()で設定しますが、サンプルではいくつかの色の表現方法を使用しています。
一番上の方法はRGBの各色の値を0〜255の整数値(int型)で指定します。
真ん中の方法も同様ですが、数値に0xをつけて16進数で指定することもできます。
一番下の方法はRGBまとめて整数値(int型)で指定する方法ですが、0xをつけて16進数とすることでHTMLと同じ感覚で色を指定することができます。
上記以外にも、グラフィックを描画する命令はいくつかあります。
Sun MicorsystemsのWebサイトにはJavaのリファレンスが用意されています。
リファレンスで調べることができれば、それ以外の命令で図形を描くことができます。

○リファレンスの見方

Javaのプログラムはクラスという単位で作成されます。グラフィックの描画を担当するのはGraphicsクラス(またはGraphics2Dクラス)ですが、そのクラスにはいくつかの命令(メソッド)が用意されています。リファレンスでGraphicsクラスのメソッドを調べれば、どのようは命令がJavaに用意されているかがわかります。

JDK 5.0のドキュメント(リファレンス)は以下のURLに記載されています。ドキュメントを一式ダウンロードすることもでき、Javaのプログラムを行う際には必須のドキュメントです。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/index.html

ページ内に、「Java 2 プラットフォーム API 仕様」というページへのリンクがあります。
Javaで決められているクラスにどんなメソッドが用意されているかを見ることができます。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html

上記のページで3つに別れたフレームの左上のフレーム内で「すべてのクラス」を選択すると、左下のフレーム内にすべてのクラスの名前が表示されます。
「Graphics」クラスを選択すると、右のフレーム内にGraphicsクラスの説明と共にメソッドの概要が表示されます。上記で説明したg.drawLineなどのメソッドの説明もありますので、上記と併せれば表の見方が分かるはずです。上記以外のメソッドによる描画も試してみて下さい。
またGraphics2DクラスはGraphicsクラスを拡張した高度なメソッドが用意されています。線の太さを指定したり、アンチエイリアスを用いた描画なども定義されています。