چند ماثل برای یادگیری Canvas
کشیدن خط
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class DrawLine extends MIDlet{
private Display display;
public void startApp(){
display = Display.getDisplay(this);
display.setCurrent (new DrawingCanvas());
}
public void pauseApp(){}
public void destroyApp (boolean forced){}
}
class DrawingCanvas extends Canvas{
public void paint (Graphics g){
g.setColor (255, 0, 0);
g.fillRect (0, 0, getWidth(), getHeight());
g.setColor (0, 0, 255);
g.fillRect (20, 30, 200, 80);
g.setColor (128, 0, 255);
g.drawLine (0, 0, 100, 200);
}
}
کشیدن مستطیل :
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class DrawRectengle extends MIDlet {
public void startApp () {
Display.getDisplay (this).setCurrent (new DrawingDemoCanvas ());
}
public void pauseApp () {}
public void destroyApp (boolean forced) {}
}
class DrawingDemoCanvas extends Canvas {
public void paint (Graphics g) {
g.setColor (255, 0, 0);
g.fillRect (0, 0, getWidth (), getHeight ());
g.setColor (0, 0, 255);
g.fillRect (20, 30, 200, 80);
}
}
درج متن در جاهای مختلف صفحه نمایش
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class DrawString extends MIDlet{
private Display display;
public void startApp(){
display = Display.getDisplay(this);
display.setCurrent (new TextCanvas());
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){}
public void commandAction(){}
}
class TextCanvas extends Canvas{
public void paint(Graphics g){
g.setColor(255, 0, 0);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 255);
g.drawString("Top/Left", 0, 0, Graphics.TOP | Graphics.LEFT);
g.drawString("Baseline/Center", getWidth() / 2, getHeight() / 2,
Graphics.HCENTER | Graphics.BASELINE);
g.drawString("Bottom/Right", getWidth(), getHeight(), Graphics.BOTTOM | Graphics.RIGHT);
}
}
کشیدن قطاع و دایره:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class RunningCircle extends MIDlet{
public void startApp(){
Display display = Display.getDisplay (this);
display.setCurrent(new CircleCanvas(display, 10));
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){}
}
class CircleCanvas extends Canvas implements Runnable{
int degree = 360;
long startTime;
int seconds;
Display display;
CircleCanvas(Display display, int seconds){
this.display = display;
this.seconds = seconds;
startTime = System.currentTimeMillis();
}
public void paint(Graphics g){
g.setColor(0, 0, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(255, 0, 0);
g.fillArc(15,15, 200, 200, 90, degree);
display.callSerially(this);
g.setColor(255, 0, 0);
g.drawArc(15, 15, 200, 200, 0, 360);
}
public void run(){
int i = 0;
int milisecond = (int)((System.currentTimeMillis() - startTime)/seconds);
degree = 360 - (milisecond * 360)/7200;
for(i = 0; i <= milisecond; i++){
repaint();
}
}
}
کشیدن مثلث:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class DrawTraingle extends MIDlet implements CommandListener{
private Display display;
private List list;
private Command ok, exit;
private CanvasDraw canvasDraw;
public DrawTraingle(){
canvasDraw = new CanvasDraw();
display = Display.getDisplay(this);
list = new List("DrawTraingle", List.IMPLICIT);
ok = new Command("Draw", Command.OK, 2);
exit = new Command("Exit", Command.EXIT, 2);
list.append("Draw Triangle", null);
list.addCommand(ok);
list.addCommand(exit);
list.setCommandListener(this);
}
public void startApp(){
display.setCurrent(list);
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){
notifyDestroyed ();
}
public void commandAction(Command c, Displayable d){
int listItemIndex = list.getSelectedIndex();
if(c == ok){
display.setCurrent(canvasDraw);
}else if(c == exit){
destroyApp(true);
}
}
class CanvasDraw extends Canvas implements CommandListener{
Command back;
public CanvasDraw(){
back = new Command("Back", Command.BACK, 1);
addCommand(back);
setCommandListener(this);
}
public void paint(Graphics g){
g.setColor(0, 0, 255);
g.fillRect(0,0, getWidth (), getHeight ());
g.setColor(255, 0, 0);
g.drawString("Draw Traingle", getWidth () / 2, 5, Graphics.HCENTER | Graphics.TOP);
g.fillTriangle(getWidth() / 4, 100, 90, 180, 180, 90);
}
public void commandAction (Command c, Displayable d){
if(c == back){
display.setCurrent(list);
}
}
}
}