顏色表示
ARGB(一種色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常見於32位位圖的存儲結構)A 是alpha值,稱爲顏色強度,範圍爲0-255的十進制數的16進制數表示,0xFF表示全強度(255),00指通道中無顏色即0,ARGB定義了四個顏色通道,0xFFFFFFFF代表各個通道都是全強度,爲白色,0xFF000000代表黑色,在紅、綠、藍三種顏色均沒有顏色,請注意, Alpha 通道 (第一對) 仍然爲全強度 (FF)。Alpha 通道中的全強度意味着沒有 alpha (FF), 無強度 (00) 意味着全 alpha。因此, 透明像素顏色值爲 0x00FFFFFF。
對於一個8位的R、G、B、A值可以通過移位運算得到相應的32位的ARGB值。例如:8位的R、G、B、A值分別red=255(FF16進制)、green=85(55 16進制)、blue=43(F3)、alpha=255(FF),那麼32位的ARGB顏色值0xFFFF55F3可以通過如下方式取得:
color32=alpha<<24|red<<16|green<<8|blue;
alpha值爲0xFF,二進制爲11111111,將它左移24位,結果爲11111111000000000000000000000000
紅色範圍的值爲0xFF, 二進制爲11111111,將它向左移動16位,結果: 111111110000000000000000;
綠色範圍的值爲0x55,二進制爲01010101,將它向左移動8位,結果: 000000000101010100000000;
藍色範圍的值爲0xF3,二進制爲11110011,不需要移動. 11110011
將這三組數用或運算運行後,得到11111111111111110101010111110011,轉換爲16進制等於0xFFFF55F3.可以寫成:
當有了32位的ARGB值時,可以通過右移位運算得到相應的0-255之間的A、R、G、B值。
alpha : 右移24位,結果 : 00000000000000000000000011111111,即0xFF(255);
red : 右移16位,結果 : 00000000000000001111111111111111;這時得出了red的值,但alpha值還在一邊,使用&操作符(兩個都是1則爲1,其中一個爲0則爲0)
將其與0xFF進行運算 : 111111111111111 & 0000000011111111,因爲alpha位的數字都與0相比較,所以都爲0,所以結果爲 0000000011111111;
green: 右移8位,然後與0xFF執行&操作即可.
blue 不需要移位,直接與0xFF操作&即可