?? canvasdemo.java
字號(hào):
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.io.IOException;
// Canvas繪圖程序
public class CanvasDemo extends MIDlet implements CommandListener {
private Command exitCommand = new Command("退出", Command.EXIT, 1); //退出命令
private Command backCommand = new Command("返回", Command.BACK, 3); //返回命令
private Display display; // 設(shè)備的顯示器
private List menuList; //圖片名的主菜單列表
private DrawingCanvas canvas; //顯示繪制的圖形
String[] itemNames = { //顯示列表名稱
"直線",
"弧",
"矩形",
"圓角矩形",
"三角形",
"文字"
};
public CanvasDemo() {
display = Display.getDisplay(this); //取得設(shè)備的顯示器
}
// 重載抽象類MIDlet的抽象方法startApp()
protected void startApp() {
canvas = new DrawingCanvas(); // 創(chuàng)建DrawingCanvas對(duì)象canvas
canvas.addCommand(exitCommand); // 為canvas加上退出命令
canvas.addCommand(backCommand); // 為canvas加上返回命令
canvas.setCommandListener(this); // 為canvas設(shè)置命令監(jiān)聽者
int num = itemNames.length; // 菜單項(xiàng)個(gè)數(shù)
Image[] imageArray = new Image[num]; // 列表的圖標(biāo)數(shù)組
try {
Image icon = Image.createImage("/Icon.png"); // 創(chuàng)建列表的圖標(biāo)
for(int i=0;i<num;i++) {
imageArray[i] =icon;
}
} catch (java.io.IOException err) {
}
menuList = new List("Canvas繪圖程序", Choice.IMPLICIT, itemNames, imageArray);
menuList.addCommand(exitCommand); // 為主菜單列表加上退出命令
menuList.setCommandListener(this); // 為主菜單列表設(shè)置命令監(jiān)聽器
display.setCurrent(menuList); // 顯示主菜單列表
}
// 重載抽象類MIDlet的方法pauseApp()
protected void pauseApp() {
}
// 重載抽象類MIDlet的方法destroyApp()
protected void destroyApp(boolean unconditional) {
}
// 實(shí)現(xiàn)接口CommandListener的方法
public void commandAction(Command c, Displayable d) {
if (d.equals(menuList)) {
if (c == List.SELECT_COMMAND) {
int select = ((List)d).getSelectedIndex(); //得到選中的菜單項(xiàng)
switch(select) {
case 0:
canvas.drawLine(); // 繪制直線
display.setCurrent(canvas);
break;
case 1:
canvas.drawArc(); // 繪制弧
display.setCurrent(canvas);
break;
case 2:
canvas.drawRect(); // 繪制矩形
display.setCurrent(canvas);
break;
case 3:
canvas.drawRoundRect(); // 繪制圓角矩形
display.setCurrent(canvas);
break;
case 4:
canvas.drawTriangle(); // 繪制三角形
display.setCurrent(canvas);
break;
case 5:
canvas.drawText(); // 繪制文字
display.setCurrent(canvas);
}
}
}
if (c == backCommand) {
display.setCurrent(menuList);
} else if (c == exitCommand) {
destroyApp(false); // 銷毀程序
notifyDestroyed();
}
}
// 繪制圖形的畫布
public class DrawingCanvas extends Canvas {
int w = getWidth(); // 畫布的寬度
int h = getHeight(); // 畫布的高度
Image buffer = Image.createImage(w, h); // 用于繪圖的緩沖圖像
Graphics gc = buffer.getGraphics(); // 獲取緩沖圖像的圖形環(huán)境
// 清除畫布
public void clearScreen() {
gc.setColor(255,255,255); // 設(shè)置繪圖顏色為白色
gc.fillRect(0,0,w,h); // 把緩沖圖像填充為白色
gc.setColor(255,0,0); // 設(shè)置繪圖顏色為紅色
}
// 繪制直線
public void drawLine() {
setTitle("直線"); // 設(shè)置畫布的標(biāo)題
clearScreen(); // 清除畫布
gc.drawLine(10,10,w-20,h-20); // 繪制黑色直線
gc.setColor(0,0,255); // 設(shè)置繪圖顏色為藍(lán)色
gc.drawLine(10,h/2,w-10,h/2); // 繪制藍(lán)色直線
}
// 繪制弧
public void drawArc() {
setTitle("弧線和填充弧");
clearScreen();
gc.drawArc(5,5,w/2-20,h/2-20,60,216); // 繪制弧線
gc.drawArc(5,h/2-10,w/2-20,h/2-20,0,360); // 繪制圓
gc.setColor(0,0,255);
gc.fillArc(w/2,5,w/2-20,h/2-20,60,216); // 繪制填充弧線
gc.fillArc(w/2,h/2-10,w/2-20,h/2-20,0,360); // 繪制填充圓
}
// 繪制矩形
public void drawRect() {
setTitle("矩形和填充矩形");
clearScreen();
gc.drawRect(25,25,w/2-30,h/2-30); // 繪制矩形
gc.fillRect(w/2+25,25,w/2-30,h/2-30); // 繪制填充矩形
}
// 繪制圓角矩形
public void drawRoundRect() {
setTitle("圓角矩形和填充圓角矩形");
clearScreen();
gc.drawRoundRect(5,5,w-5-30,h/2-30,20,20); // 繪制圓角矩形
gc.setColor(0,0,255);
gc.fillRoundRect(5,h/2,w-30,h/2-30,20,20); // 繪制填充圓角矩形
}
// 繪制三角形
public void drawTriangle() {
setTitle("填充三角形");
clearScreen();
gc.fillTriangle(w/2, h/6, w/6, h/2, w/2, h/2);
}
// 繪制文字
public void drawText() {
setTitle("文字"); //設(shè)置標(biāo)題
clearScreen();
gc.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_SMALL)); // 設(shè)置字體
gc.drawString("Hello World!",0,0,gc.TOP|gc.LEFT); // 使用當(dāng)前字體繪制文字
gc.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD|Font.STYLE_UNDERLINED,Font.SIZE_LARGE));
gc.drawString("Hello World!",0,h/3,gc.TOP|gc.LEFT);
}
public void paint(Graphics g) {
g.drawImage(buffer, 0, 0, 0); // 把緩沖區(qū)圖像的內(nèi)容繪制到畫布上
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -