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

32 位色 ARGB 透明度通道 (Alpha) 作用與示例:0x00FFFFFF 完全透明白色

     編輯:程式設計綜合問答

結構定義

32 位色通常指 **ARGB8888**,每像素 4 字節:

位範圍通道含義取值範圍
31-24Alpha (A)透明度 / 不透明度0x00 (全透明) ~ 0xFF (不透明)
23-16Red (R)紅色分量0-255
15-8Green (G)綠色分量0-255
7-0Blue (B)藍色分量0-255

核心作用

  • Alpha 混合:繪製時根據公式 `C_out = C_src * α_src + C_dst * (1 - α_src)` 融合前景與背景。
  • 圖層疊加:UI 控件背景、圖片疊加、漸變遮罩、淡入淡出動畫均依賴 Alpha 通道。
  • 非矩形顯示:圓形頭像、不規則圖標、陰影效果,透明區域 Alpha=0。

經典示例


// 32 位整數表示 (0xAARRGGBB)
int opaqueWhite   = 0xFFFFFFFF; // 不透明白色
int semiRed       = 0x80FF0000; // 50% 透明紅色
int transparentW  = 0x00FFFFFF; // 完全透明白色 (RGB 為白但不可見)
int invisible     = 0x00000000; // 完全透明黑 (常用於清屏)

Android 代碼實例


// 設置 View 背景半透明紅
view.setBackgroundColor(0x80FF0000); // 或 Color.argb(128, 255, 0, 0)

// Paint 設置透明度繪製文字
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setAlpha(128); // 0-255
canvas.drawText("半透明文字", x, y, paint);

// 圖片載入時保留 Alpha 通道
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.ARGB_8888; // 強制 32 位
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon, opts);

常見誤區

  • 以為 `0x00FFFFFF` 是「白色」:實際**完全透明**,RGB 值在混合前無視覺意義。
  • 忽略預乘 Alpha (Premultiplied Alpha):某些圖庫 (如 Glide、Skia) 內部使用預乘格式,直接操作像素需注意轉換。
  • 24 位色 (RGB888) 無 Alpha 通道,無法實現透明效果,存儲節省 25% 但功能受限。

Alpha 通道是現代圖形渲染管線的核心組件,理解其混合數學與存儲格式,是實現高質量 UI 效果的前提。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved