/* iアプリ, MIDP の Canvas の使い方の例 Time-stamp: "2005/10/07 Fri 17:26 hig" Saburo Higuchi 2004 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://sparrow.math.ryukoku.ac.jp/~hig/course/juniors_2004/02/ この課題やるときは, 方眼紙用意してあげたほうがいいかも. */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** Canvas の例(イベント処理なし) */ public class CanvasSample extends MIDlet { /** 起動するときに呼ばれる メソッド. 必須. */ public void startApp(){ MyCanvas mc = new MyCanvas(this); Display.getDisplay(this).setCurrent(mc); } /* 以下は, 空でも定義しておくことが必要 */ public void pauseApp(){} public void destroyApp(boolean unconditional){} /* 自分で好きなだけメソッドを定義してよい */ } /** Canvas を用いたグラフィックス */ class MyCanvas extends Canvas { // MyCanvas という名前は自分で決められる. CanvasSample parent; // この Canvas を呼び出したクラス public MyCanvas(CanvasSample ap){ this.parent=ap; // これは樋口の癖. 必須ではない. } /** 描画. このメソッドで描きたいものを描く */ public void paint(Graphics g){ int width=getWidth(); // 画面の横幅. int height=getHeight(); // 画面の高さ // 座標系は左上が (0,0), 右下が (width-1,height-1). J2SE と同じ // 画面を消去. 白い四角形を描く. MIDP の場合, RGB値で設定 g.setColor(255,255,255); g.fillRect(0,0,width,height); // 左上 (0,0). // 線を引く g.setColor(0,0,255); g.drawLine(0,0,20,20); //(0,0) から (20,20) に線を引く g.setColor(255,0,0); // MIDP には fillPolygon はなく, 4角形のみ. g.fillRect(width-40,height-60,20,30); // かわりといっては何だが扇形を描くメソッドがある. g.drawArc(0,height-100,100,100,30,180); // fillArc なら塗り潰す. // 液晶画面のサイズを表示 Font font=Font.getDefaultFont(); g.setFont(font); int fheight=font.getHeight(); // フォントの高さ int fwidth=font.stringWidth("m"); // プロポーショナルフォントの幅は, // キャラクタによって異るので. // MIDP では最後に alignment を指定する引数がある. g.drawString(width + "x" + height + " " + fwidth + "x" + fheight , 0, height-1 ,Graphics.LEFT|Graphics.BOTTOM); } } /* Local Variables: mode: java compile-command: "make -k PLAT=DOJA CanvasSample.java" End: */