Я пытаюсь извлечь компоненты RGB из UIColor
, чтобы вручную создать пиксели в CGBitmapContext
. Следующий пример кода отлично работает для большинства констант UIColor
, но, как ни странно, не для всех. А именно:
CGColorRef color = [[UIColor yellowColor] CGColor];
const float* rgba = CGColorGetComponents(color);
float r = rgba[0];
float g = rgba[1];
float b = rgba[2];
float a = rgba[3];
NSLog( @"r=%f g=%f b=%f a=%f", r, g, b, a);
Результаты для [UIColor yellowColor]
выше, как и ожидалось,
r=1,000000 g=1,000000 b=0,000000 a=1,000000.
[UIColor redColor]
дает r=1,000000 g=0,000000 b=0,000000 a=1,000000, как и ожидалось. Аналогично для blueColor
и greenColor
.
Однако результаты для [UIColor blackColor]
и [UIColor whiteColor]
кажутся совершенно аномальными, и я не знаю, что я делаю неправильно (если это действительно так).
А именно, [UIColor blackColor]
дает r=0,000000 g=1,000000 b=0,000000 a=0,000000, что является прозрачным зеленым,
и [UIColor whiteColor]
дает r=1,000000 g=1,000000 b=0,000000 a=0,000000, что является прозрачным желтым цветом.
Я был бы признателен, если бы кто-нибудь мог:
(1) объяснить, что я делаю неправильно
(2) воспроизвести мои аномальные результаты и сказать мне, что это не я, или
(3) ударить меня по голове большим молотком, чтобы не было так больно.
Говард