Я пытаюсь извлечь компоненты 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 г = 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) ударил меня по голове большим молотом, чтобы он так сильно не пострадал.
Ховард