首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

MIDP 圖片透明度漸變效果實作:像素級 Alpha 動畫

     編輯:J2ME

效果描述

將一張不透明圖片從完全透明(Alpha=0)逐漸變為原始不透明度(Alpha=255),產生淡入動畫。核心同「MIDP 2.0 圖片像素操作」一文的案例一,此處精簡呈現關鍵邏輯。

核心程式碼

public class ShadowMIDlet extends MIDlet {
    Canvas c = new ShadowCanvas();
    protected void startApp() { Display.getDisplay(this).setCurrent(c); }
    protected void pauseApp() {}
    protected void destroyApp(boolean u) {}
}

class ShadowCanvas extends Canvas implements Runnable {
    int w, h;
    Image srcImage;
    int[] srcRgb, shadowRgb;
    int imgW, imgH, count;

    public ShadowCanvas() {
        w = getWidth(); h = getHeight();
        try { srcImage = Image.createImage("/av.png"); }
        catch (IOException e) { e.printStackTrace(); }
        imgW = srcImage.getWidth(); imgH = srcImage.getHeight();
        srcRgb = new int[imgW * imgH];
        srcImage.getRGB(srcRgb, 0, imgW, 0, 0, imgW, imgH);
        shadowRgb = new int[srcRgb.length];
        System.arraycopy(srcRgb, 0, shadowRgb, 0, shadowRgb.length);
        // 全透明初始化
        for (int i=0;i

動畫幀截圖



技術要點

  • getRGB 取得 ARGB 陣列,最高 8 bits 為 Alpha。
  • & 0x00FFFFFF 清除 Alpha(設為 0),| (alpha<<24) 設定新 Alpha。
  • drawRGB(..., true) 最後一參 true 表示資料含 Alpha 通道。
  • 執行緒睡眠 10ms ≈ 100 FPS 理論值,實際受裝置影響約 10~20 FPS。
  • changed 標記避免所有像素達標後繼續空跑執行緒。

擴充應用

  • 淡出:Alpha 從原始值遞減至 0。
  • 交叉淡化:兩張圖同時一淡入一淡出。
  • 局部透明:仅修改特定區域(如圓形漸變蒙版)的 Alpha。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved