看上去这一段很简单呀?
作用是从传入的一个RGB颜色值转换成一个相应的灰度值吧。
传入的变量rgb的四个字节组成应该是:(每项一字节,从高到低)
alpha(24-31) 好象是亮度,又或者是对比度,光度?全忘了,还给老师了。 :)
R(16-23) 红色 G(8-15) 绿色 B(0-7)蓝色alpha = rgb & (0xFF << 24);  // 保留传入处理颜色的alpha值 24-31位,0xFF 就是8位1,24-31位向右移位24位到0-7位,用8位1将其余位去掉
r = (rgb >> 16) & 0xFF; // 从传入颜色取出对应红色的值,16-23位到低8位要右移16位
g = (rgb >> 8) & 0xFF; // 从传入颜色取出对应绿色的值,8-15位到低8位要右移8位
b = (rgb >> 0) & 0xFF; // 从传入颜色取出对应蓝色的值 0-7位不需移位gray = (r + g + b) / 3; //每一色彩项的值,加起来除3就是对应的灰度值。return alpha &brvbar; gray << 16 &brvbar; gray << 8 &brvbar; gray;  
//保留alpha值,注意到 r, g, b 每一项都不大于 0xff, gray 也不大于0xff,因此 gray 只有后8位有效,其余位为零。
// 因此实际上 gray << 16 &brvbar; gray <<8 &brvbar; gray 相当于低位三个字节值均相同,再加上alpha值
// 从RGB色彩的含义来说,这个返回值代表的色彩就是一个有alpha值的纯灰度值。