MyDrawCanvas.java(参考3)



/**
 * 絵を描く処理を追加した Canvas
 */
import java.awt.*;

public class MyDrawCanvas extends Canvas {

  /** コンストラクタ */
    public MyDrawCanvas() {
        setSize( 800, 600 );
        setBackground( Color.white );
    }

  /** 絵を描く処理 */
    public void paint( Graphics g ) {

        int w = getSize().width;    // キャンバスの横幅
        int h = getSize().height;   // キャンバスの高さ
        int d = h/64 + 1;           // 空を描く時の幅

      // 夕焼けの空の描画
        for( int i=0; i<64; i++ ) {
            Color color = new Color( i*4, i*3/2, 255-i*4 );
            g.setColor( color );
            g.fillRect( 0, d*i, w, d );
        }

      // 日の描画
        int r = h/10;             // 日の直径
        int x = (w-r)/2;          // 日の左端のX座標 
        int y = h - r/2;          // 日の上端のY座標 
        g.setColor( new Color( 255, 0, 0 ) );
        g.fillArc( x, y, r, r, 0, 360 );  // 日を描く

      // 星の描画
        g.setColor( new Color( 255, 255, 128 ) );
        for( int i=0; i<32; i++ ) {
            x = (int)( w * Math.random() );
            y = (int)( h * Math.random() );
            g.fillRect( x, y, 1, 1 );  // 星を描く
        }
    }

  /** 最初に呼び出されるメソッド(テスト用) */
    public static void main( String[] argv ) {
        MyDrawCanvas canvas = new MyDrawCanvas();
        Frame frame = new Frame( "My Canvas" ); 
        frame.add( canvas, "Center" );
        frame.pack();
        frame.show();
    }
}