0

HEXCOLOR(0xe3f3fbff)我怎样才能 给颜色CGContextSetRGBFillColor

4

2 回答 2

5

尝试

CGContextSetRGBFillColor(context, 0xe3 / 255.0, 0xf3 / 255.0, 0xfb / 255.0, 0xff / 255.0);
于 2009-07-16T06:45:39.893 回答
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,a 值,如下所示:

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);
于 2009-07-16T06:35:58.570 回答