2023年7月14日发(作者:)
16进制颜⾊转换RGB原理常见的⼏种表⽰颜⾊的⽅法有:1. ColorName: 直接⽤颜⾊的名称来指定颜⾊,⽐如: red blue green yellow1. 优点: 很直观的表达想要使⽤的颜⾊2. 缺点: 颜⾊的名称很少, 不能有效表⽰⼀些较为丰富的颜⾊2. RGB: 三通道颜⾊1. 他是⽬前运⽤最⼴泛的颜⾊系统之⼀2. 可以通过红绿蓝三⾊通道, 外加alpha透明度, 来展⽰⼏乎所有的颜⾊3. RGB是从颜⾊的发光原理来设定的, 相当于红绿蓝三个颜⾊通过不同亮度, 来组合成为需要的颜⾊4. 0为最暗, 255为最亮3. HEX: ⼗六进制颜⾊1. ⼗六进制与RGB都可以展⽰出⾮常丰富的颜⾊, 他是通过16进制0~F这16个字符来表达颜⾊的2. 同样, 000000为⿊⾊, FFFFFF为⽩⾊RGB转换为HEXRGB与HEX中每个颜⾊都是⼀⼀对应的关系, 如下⾯的附表所⽰RGB的数值 = 16 * HEX的第⼀位 + HEX的第⼆位⽰例如下:RGB: 92, 184, 23292 / 16 = 5余12 -> 5C184 / 16 = 11余8 -> B8232 / 16 = 14余8 -> E8HEX = 5CB8E8HEX转换RGB此转换就是将上述的转换逆转即可⽰例如下HEX: F26BC1F2 = 15和2 -> 15 * 16 + 2 = 2426B = 6和11 -> 6 * 16 + 11 = 107C1 = 12和1 -> 12 * 16 + 1 = 193转载来源:代码中如何使⽤⼗六进制的颜⾊?使⽤演⽰:⽅式⼀ [UIColor colorWithRed:((0xF86340 & 0xFF00) >> 8)/255.0 green:((0xF86340 & 0xFF00) >> 8)/255.0 blue:((0xF86340 & 0xFF))/255.0 alpha:1];⽅式⼆+ (UIColor *)ml_colorWithHex:(UInt32)hex alpha:(CGFloat)alpha{
CGFloat score_R = (hex & 0xFF0000) >> 16;
CGFloat score_G = (hex & 0xFF00) >> 8;
CGFloat score_B = (hex & 0xFF);
return [UIColor colorWithRed:score_R/255.0 green:score_G/255.0 blue:score_B/255.0 alpha:alpha];}如何计算的?0xF86340 & 0xFF0000, 0xF86340 & 0xFF00 ,0xF86340 & 0xFF 分别是什么意思?0xF86340 & 0xFF0000 ,表⽰ F86340 和 0xFF0000 进⾏
与 运算,⽬的是要取出F86340的前两位F8,因为F8表⽰red颜⾊通道的值,取出来的值已经是转换好的⼗进制的了。0xF86340⼗六进制:⼆进制:F11118114xFF0000⼗六进制:⼆进制:F1111F0位运算项⽬0xF86340⼆进制:运算符:0xFF0000⼆进制:(计算结果)⼆进制:1111&111000000通过位运算得到结果的1111 1000 0000 0000 0000 0000,如果将此⼆进制数转换为⼗进制数,是⼀个⾮常⼤的数,⽽每个颜⾊通道的最⼤值是255,所以还需要通过位移运算,将得到的结果控制到最⼤范围内。如何位移运算?⾸先我们先看下⾯⼀个⼆进制数:0000 0000 0000 0000 1111 1111 ===> 该数最⼤的值是 255 (⼗进制)。所以我们只要将之前计算的结果位移到最后的⼋个⼆进制位的位置上即可。1111 1000 0000 0000 0000 0000 >> 16 右移16位0000 0000 0000 0000 1111 1000 (位移后的结果)0xF86340 & 0xFF00 和
F86340 & 0xFF 分别取出⼗六进制的 63 和 40 通过位运算和位移运算 转换为⼗进制,进⾏颜⾊值的计算(计算原理和上述⼀样)。转载来源:
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689264180a226409.html
评论列表(0条)