2014-10-16 91 views

回答

1

這是一個將RGB三元組(三個無符號的8位值)轉換爲無符號的32位ARGB值的簡單函數。

<<運算符將整數的二進制數字向左移動指定的位置數。因此,舉例來說,如果Yr = 100,Yg = 150和Yb = 200,那麼你將結束與32位數字0xFF6496C8,其中該RGB信息被存儲爲如下:

---- alpha ---- ----- Yr ------ ----- Yg ------ ----- Yb ------ 
[1 1 1 1 1 1 1 1][0 1 1 0 1 0 0 0][1 0 0 1 0 1 1 0][1 1 0 0 1 0 0 0] 
alpha=255=0xFF Yr=0x64=100  Yg=0x96=150  Yb=0xC8=200 

的α值( 255)大概相當於100%不透明度。

如果您想知道,&運算符是一個邏輯AND運算符,用於屏蔽不需要的位。在您鏈接的代碼中,由於值Yr,Yg和Yb已經在0到255的範圍內,因此它看起來並不必要。

但是,從以下代碼提取RGB值時非常有用: 32位ARGB整數,例如:

alpha = (ARGB >> 24) & 0xff; 
Yr = (ARGB >> 16) & 0xff; 
Yg = (ARGB >> 8) & 0xff; 
Yb = ARGB & 0xff; 
+0

非常感謝! – 2014-10-19 14:41:57