戻る プログラム ソースリスト 「らくがきボード」


"/*" と "*/" で囲まれた部分や "//" より右はコメントで、 プログラムの動きには関係がありません。 このページでは緑で表示しています。


/* ----------------------------------------------------------------------------------------------
	paint.java		落書きボード								ver. 1.00 (JDK 1.02)
																ueyama@infonet.co.jp  2000.07.25
---------------------------------------------------------------------------------------------- */
import java.applet.*;
import java.awt.*;
import java.util.*;

public class paint extends Applet
{
  int  PS=6;// ペンの太さ
  int  PenSize[]={4,6,10,14,18,24};// ペンの太さの種類
  int  PenColor=0;// ペンの色
  Color Col[]={Color.black, Color.blue, Color.cyan, Color.darkGray, Color.gray,
         Color.green, Color.lightGray, Color.magenta, Color.orange,
         Color.pink, Color.red, Color.yellow, Color.white};// ペンの色の種類
  Graphics  gr;


  public void init()// 初期設定
  {
    setBackground(Color.white);
    gr=getGraphics();
  }


  public void disp_pen(int n)// ペンのサイズの表示
  {
    int p=PenSize[n];
    gr.setColor(PS==(PenSize[n])? Col[4]: Col[12]);
    gr.drawRect(361+n*30, 370, 28, 28);
    gr.setColor(Col[PenColor]);
    gr.fillOval(360+n*30+15-p/2, 370+15-p/2, p, p);// 円を描く
  }


  public void paint(Graphics g)// 画面の表示
  {
    int i;
    g.clearRect(0,0,600,400);
    for(i=0; i<12; i++)// カラーパレットの表示
    {
      g.setColor(Col[i]);
      g.fillRect(i*30, 370, 30, 30);
    }
    g.setColor(Col[0]);
    for(i=0; i<20; i++) g.drawRect(i*30, 369, 30, 30);// 正方形を描く
    for(i=0; i< 6; i++) disp_pen(i);// ペンの表示
    g.drawLine(599, 370, 570, 399);// クリアエリアの斜線
    g.setColor(Col[6]);// 消しゴムの表示
    g.fillRect(541, 370, 29, 29);
    g.setColor(Col[12]);
    g.fillOval(541+7, 370+6, 18, 18);
  }


  public boolean mouseDown(Event e, int x, int y)// マウスがクリックされたときの処理
  {
    if(y>370)
    {
      if(x<360)// ペンの色の変更
      {
        PenColor = x/30;
        for(int i=0; i<6; i++) disp_pen(i);
      }
      else if(x<540)
      {
        PS = PenSize[(x-360)/30];// ペンの太さの変更
        for(int i=0; i< 6; i++) disp_pen(i);// ペンの表示
      }
      else if(x<570) gr.setColor(Col[12]);// 消しゴム
      else gr.clearRect(0, 0, 600, 369);// 画面のクリア
    }
    return true;
  }


  public boolean mouseDrag(Event e, int x, int y)// マウスがドラッグされたときの処理
  {
    if(y < 370-PS/2) gr.fillOval(x-PS/2, y-PS/2, PS, PS);// 円を描く
    return true;
  }
}


情報処理概論 に戻る  講義資料 に戻る  プログラムを作る (1)  「らくがきボード」に戻る  戻る

2000.07.25 ueyama@infonet.co.jp