JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう 前回の復習 絵を描く部分を次のように描くと・・ public void paint(Graphics g) { g.drawLine(100,100,200,200); g.drawLine(200,100,300,200); } 線が2本引けますね 今日は色をつけてみよう public void paint(Graphics g) { g.setColor(Color.red); g.drawLine(100,100,200,200); g.setColor(Color.blue); g.drawLine(200,100,300,200); } 色の設定 setColor(色)のように設定します。 色には Color.red Color.blue Color.yellow Color.white などなど、たくさんあります。 自分で色を作る コンピュータの色の3源色(RGB) 赤 緑 青 をまぜて自分で色を作ることができます。 構文 setColor(new Color(赤,緑,青)) 赤、緑、青には 0~255までの整数を代入します。 値は強さをさしています 例 setColor(new Color(0,0,0)) ⇒黒 setColor(new Color(255,255,255)) ⇒白 setColor(new Color(0,255,255)) ⇒黄色 setColor(new Color(125,125,125)) ⇒灰色 ではやってみましょう public void paint(Graphics g) { g.setColor(new Color(200,0,150)); g.fillRect(100,100,200,50); } どうですか? 色を指定する方法はこんな感じです いろいろと試してください(駄洒落ではありません) 次にjavaでfor文を使ってみましょう for文 for(初期値の設定;継続条件;1回ごとの処理) 例 for(i=1;i<5;i++) { } i++とはiに1を足すという意味です。 { }の中は4回繰り返されます for文のサンプル① public void paint(Graphics g) i+=10とは { int i; iに10を足すという意味です for(i=100;i<=300;i+=10) このプログラムの結果を { 想像してみてください g.drawLine(100,i,i,300); } } for文のサンプル② public void paint(Graphics g) { int i; for(i=0;i<=255;i++) { g.setColor(new Color(0,i,255-i)); g.drawLine(i,0,i,100); } } これも結果を想像 してみよう! 色についてはここまで 次はグラフを描いてみましょう 座標系の違いに注意 描かせたいグラフの範囲を[-1,1]×[-1,1]とします。 画面のサイズを500×500とします。 数学上の座標を(x,y)とし 画面の座標を(x’,y’)とすると・・ x’=250+250x y’=250-250y となります。 プログラムの前に・・ これからy=x のグラフを描きます 2 グラフを描くときには点を細かく打っていきますが、 JAVAには点を打つ命令がありません。 もし(200,200)に点を打ちたいときは drawLineを使って次のようにします。 drawLine(200,200,200,200) ではプログラムです public void paint(Graphics g) { double x,y; int x1,y1; for(x=-1;x<=1;x+=0.01) { y=x*x; x1=(int)(250+250*x); y1=(int)(250-250*y); g.drawLine(x1,y1,x1,y1); } } public void paint(Graphics g) { double x,y; int x1,y1; for(x=-1;x<=1;x+=0.01) { y=x*x; x1=(int)(250+250*x); y1=(int)(250-250*y); g.drawLine(x1,y1,x1,y1); } } 実数の計算をするので x,yをdoubleで定義します public void paint(Graphics g) { double x,y; 整数型でx1,y1を定義します。 int x1,y1; コンピュータの座標が整数のため for(x=-1;x<=1;x+=0.01) です。 { y=x*x; x1=(int)(250+250*x); y1=(int)(250-250*y); g.drawLine(x1,y1,x1,y1); } } public void paint(Graphics g) { double x,y; int x1,y1; for(x=-1;x<=1;x+=0.01) { y=x*x; x1=(int)(250+250*x); y1=(int)(250-250*y); g.drawLine(x1,y1,x1,y1); } } xをー1から1まで、0.01ずつ 増やしながら繰り返します。 public void paint(Graphics g) { double x,y; int x1,y1; for(x=-1;x<=1;x+=0.01) { y=x*x; x1=(int)(250+250*x); y1=(int)(250-250*y); g.drawLine(x1,y1,x1,y1); } } 今回描かせたい関数 public void paint(Graphics g) { double x,y; int x1,y1; for(x=-1;x<=1;x+=0.01) { y=x*x; x1=(int)(250+250*x); 数学上の座標から y1=(int)(250-250*y); コンピュータの座標に変換します g.drawLine(x1,y1,x1,y1); } } コンピュータの座標のため 整数型になおします。 public void paint(Graphics g) { double x,y; int x1,y1; for(x=-1;x<=1;x+=0.01) { y=x*x; x1=(int)(250+250*x); y1=(int)(250-250*y); g.drawLine(x1,y1,x1,y1); } } (x1,y1)に点を打ちます 今日はここまでです 暇がある人は いろいろな絵や いろいろな関数を描いてみてください。
© Copyright 2024 ExpyDoc