bonjourblack 2011-05-19 11:05
浏览 260
已采纳

Android-颜色转换问题

public void setColor(int color) {
int red = (color & 0xff0000) >> 16;
int green = (color & 0x00ff00) >> 8;
int blue = (color & 0x0000ff);
paint.setColor(Color.rgb(red, green, blue));
}

这段代码不是看的很明白,求友人点拨...

  • 写回答

2条回答 默认 最新

  • iteye_8576 2011-05-20 06:43
    关注

    RGB色彩模式分红,绿,蓝三种,它们颜色值的范围是0-255(通俗点就是深浅程度),其它的颜色则是通过这三个基本颜色的最大值合成的。255对应16进制是FF,对应2进制是1111111,在看看代码

    int red = (color & 0xff0000) >> 16;

    0xff0000的2进制是:111111110000000000000000(一共24位)
    color & 0xff0000的意思:求和运算,得到一个000000000000000000000000-111111110000000000000000的数值,

    16的意思:右移16位,得到前8位的值,也就是00000000-11111111的数值,对应的2进制也就是0-255的值了。

    你的代码中,green 和blue 也是上面的道理算出来的。
    这样就得到了rgb的三个值
    //这句很简单,根据上面的值得到对应的颜色,然后调用setColor方法
    paint.setColor(Color.rgb(red, green, blue));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用三极管设计一个单管共射放大电路
  • ¥20 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架