Я пытаюсь извлечь компоненты 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 г = 1,000000 b = 0,000000 а = 1,000000,
как и ожидалось.
[UIColor redColor]
т
r = 1,000000 г = 0,000000 b = 0,000000 а = 1,000000,
снова, как и ожидалось. Аналогично для blueColor
и greenColor
.
Однако , результаты для [UIColor blackColor]
и [UIColor whiteColor]
кажутся совершенно аномальными, и я не знаю, что я делаю неправильно (если это действительно так).
Для остроумия [UIColor blackColor]
дает
r = 0,000000 г = 1,000000 b = 0,000000 а = 0,000000,
который является прозрачным зеленым,
и [UIColor whiteColor]
т
r = 1,000000 г = 1,000000 b = 0,000000 а = 0,000000,
который является прозрачным желтым.
Буду признателен, если кто-нибудь сможет:
(1) объясните, что я делаю не так
(2) повторить мои аномальные результаты и скажите мне, что это не я или
(3) ударил меня по голове большим молотком, чтобы он так сильно не болел.
Говард