基本繪圖流程
- 建立繼承
Canvas 的類別,覆寫 paint(Graphics g)。
- 在
paint 中使用 Graphics 方法繪製幾何圖形。
- MIDlet 的
startApp() 中將 Canvas 設為當前顯示。
完整可執行範例
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class GraphicsMidlet extends MIDlet {
Display dis;
MyCanvas c;
public GraphicsMidlet() {
dis = Display.getDisplay(this);
c = new MyCanvas();
dis.setCurrent(c);
}
public void startApp() {}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
}
class MyCanvas extends Canvas {
public void paint(Graphics g) {
int w = getWidth();
int h = getHeight();
// 1. 白底
g.setColor(0xFFFFFF);
g.fillRect(0, 0, w, h);
// 2. 對角線:洋紅 (255,0,255) 從左上到右下
g.setColor(0xFF00FF);
g.drawLine(0, 0, w, h);
// 3. 反對角線:青 (0,255,255) 從左下到右上
g.setColor(0x00FFFF);
g.drawLine(0, h, w, 0);
// 4. 置中圓角矩形:黑色邊框,寬高 40,圓角直徑 20
g.setColor(0x000000);
g.drawRoundRect(w/2 - 20, h/2 - 20, 40, 40, 20, 20);
}
}
API 速查
| 方法 | 說明 | 參數 |
setColor(r,g,b) / setColor(RGB) | 設定前景色 | 0~255 或 0x00RRGGBB |
drawLine(x1,y1,x2,y2) | 畫線段 | 整數座標 |
drawRect(x,y,w,h) | 畫矩形邊框 | 左上角、寬、高 |
fillRect(x,y,w,h) | 填滿矩形 | 同上 |
drawRoundRect(x,y,w,h,arcW,arcH) | 畫圓角矩形邊框 | arcW/arcH 為圓角橫/縱直徑 |
fillRoundRect(...) | 填滿圓角矩形 | 同上 |
常見坑點與技巧
- 座標系統:原點 (0,0) 在左上,X 向右、Y 向下。
- 寬高包含邊框:
drawRect(0,0,10,10) 畫出的矩形佔 11×11 像素(含兩側邊框),fillRect 則正好 10×10。
- 圓角直徑非半徑:
drawRoundRect(..., 20, 20) 圓角為 20×20 的橢圓弧,非半徑 20。
- 顏色重設:每次繪製前務必
setColor,避免沿用上一筆顏色造成難以除錯的錯誤。
- 螢幕尺寸:使用
getWidth()/getHeight() 動態適配,勿寫死數值。