可以在CGContext中设置不同的颜色设置RGB填充颜色吗?

时间:2009-07-16 06:30:33

标签: ios iphone objective-c uicolor

如何在HEXCOLOR(0xe3f3fbff)中提供颜色CGContextSetRGBFillColor

2 个答案:

答案 0 :(得分:5)

尝试

CGContextSetRGBFillColor(context, 0xe3 / 255.0, 0xf3 / 255.0, 0xfb / 255.0, 0xff / 255.0);

答案 1 :(得分:3)

CGContextSetRGBFillColor 需要R,G,B和alpha的 CGFloat 值(从0.0到1.0),因此您必须将十六进制颜色的每个组件转换为值介于0.0和1.0之间。

在你的情况下:

// R = 0xe3 / 0xff = 0.890
// G = 0xf3 / 0xff = 0.953
// B = 0xfb / 0xff = 0.984
// A = 0xff / 0xff = 1.000

CGContextSetRGBFillColor(context,0.89,0.953,0.984,1.0);

您可以将十六进制颜色字符串转换为r,g,b,这样的值:

NSString  *color = @"0xe3f3fbff";

unsigned r,g,b,a;

[[NSScanner scannerWithString:[color substringWithRange:NSMakeRange(2,2)]] scanHexInt:&r];
[[NSScanner scannerWithString:[color substringWithRange:NSMakeRange(4,2)]] scanHexInt:&g];
[[NSScanner scannerWithString:[color substringWithRange:NSMakeRange(6,2)]] scanHexInt:&b];
[[NSScanner scannerWithString:[color substringWithRange:NSMakeRange(7,2)]] scanHexInt:&a];

CGContextSetRGBFillColor(context,r/255.0,g/255.0,b/255.0,a/255.0);