2014-10-16 45 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