美文网首页iOS 开发工具
RGB和HEX颜色互相转换

RGB和HEX颜色互相转换

作者: 面糊 | 来源:发表于2016-08-04 19:09 被阅读2419次
    1. 常见的几种表示颜色的方法有:

      • ColorName: 直接用颜色的名称来指定颜色
        • 优点: 很直观的表达想要使用的颜色
        • 缺点: 颜色的名称很少, 不能有效表示一些较为丰富的颜色
      • RGB: 三通道颜色
        • 他是目前运用最广泛的颜色系统之一
        • 可以通过红绿蓝三色通道, 外加alpha透明度, 来展示几乎所有的颜色
        • RGB是从颜色的发光原理来设定的, 相当于红绿蓝三个颜色通过不同亮度, 来组合成为需要的颜色
        • 0为最暗, 255为最亮
      • HEX: 十六进制颜色
        • 十六进制与RGB都可以展示出非常丰富的颜色, 他是通过16进制0~F这16个字符来表达颜色的
        • 同样, 000000为黑色, FFFFFF为白色
    2. RGB转换为HEX

      • RGB与HEX中每个颜色都是一一对应的关系, 如下面的附表所示
      • RGB的数值 = 16 * HEX的第一位 + HEX的第二位
      • 示例如下:
        • RGB: 92, 184, 232
          • 92 / 16 = 5余12 -> 5C
          • 184 / 16 = 11余8 -> B8
          • 232 / 16 = 14余8 -> E8
          • HEX = 5CB8E8
    3. HEX转换RGB

      • 此转换就是将上述的转换逆转即可
      • 示例如下
        • HEX: F26BC1
          • F2 = 15和2 -> 15 * 16 + 2 = 242
          • 6B = 6和11 -> 6 * 16 + 11 = 107
          • C1 = 12和1 -> 12 * 16 + 1 = 193
    4. OC代码, 16进制转换为RGB形式的UIColor

      • 首先, 代码如下
            #define UIColorFromRGB(rgbValue) \
            [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 \
            green:((float)((rgbValue & 0x00FF00) >> 8)) / 255.0 \
            blue:((float)((rgbValue & 0x0000FF) >> 0)) / 255.0 \
            alpha: 1.0]
    
    • 接下来说一下代码的意思

      • 首先, rgbValue是一个十六进制的参数, 里面需要传入一个16进制的数字, 这里需要注意16进制的数字一定要以0x开头, 如0x4F8ADE
      • (rgbValue & 0xFF0000) >> 16, 先做按位与运算, 然后按位右移
        1. 将两个16进制转换为2进制的数字
        2. 按位与, 两位只要出现0, 结果就为0
        3. 将结果按位移动16位(这里是为了获取得到的16进制的前两位)
        4. 将得到移动后的2进制, 转换为10进制, 然后除以255.0, 结果就是对应的颜色值
    • 以上就是16进制颜色转为2进制的步骤, 鼓励自己学习研究更多~~~

    相关文章

      网友评论

        本文标题:RGB和HEX颜色互相转换

        本文链接:https://www.haomeiwen.com/subject/vithsttx.html