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