顏色的表示

                                                                                  顏色表示

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操作&即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章