將眾多小圖打包成單張大圖(圖集/Texture Atlas)減少 JAR 數量與載入開銷。運行時需將大圖切回獨立 Image 對象供邏輯直接繪製。
Image[] digits = new Image[10];
private void initDigits() throws IOException {
Image atlas = Image.createImage("/atlas.png"); // 100×15
Graphics g;
for (int i = 0; i < 10; i++) {
digits[i] = Image.createImage(10, 15); // 目標小圖
g = digits[i].getGraphics();
g.drawImage(atlas, -i * 10, 0, Graphics.TOP | Graphics.LEFT);
}
}
原理:負座標繪製相當於源圖向右平移,配合目標圖尺寸自動裁剪。
MutableImage.getGraphics().drawImage 在 MIDP 1.0 實現中會丟棄 Alpha 通道。
setClip 直繪大圖不分割,渲染時動態設置裁剪區域:g.setClip(x, y, w, h); g.drawImage(atlas, 0, 0, ...)。零額外內存,但每繪製一次需調用 setClip。
DirectUtils.createImage(w, h, 0)// 第三個參數 0 表示透明背景(Nokia UI 延伸)
digits[i] = DirectUtils.createImage(10, 15, 0);
g = digits[i].getGraphics();
g.drawImage(atlas, -i * 10, 0, 20);
生成帶 Alpha 的可變圖像,完美保留透明像素。僅限諾基亞機型。
Image.createImage(src, x, y, w, h, transform) 原生支援子圖創建且保留 Alpha,優先使用。