Может дать другой цвет в CGContextSetRGBFillColor? - PullRequest
0 голосов
/ 16 июля 2009

Как мне дать цвет HEXCOLOR(0xe3f3fbff) в CGContextSetRGBFillColor?

Ответы [ 2 ]

5 голосов
/ 16 июля 2009

Попробуйте

CGContextSetRGBFillColor(context, 0xe3 / 255.0, 0xf3 / 255.0, 0xfb / 255.0, 0xff / 255.0);
3 голосов
/ 16 июля 2009

CGContextSetRGBFillColor требует CGFloat значений для R, G, B и альфа (от 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);
...