Ich versuche, die RGB-Komponenten von UIColor
zu extrahieren, um die Pixel in einem CGBitmapContext
Hand-Build. Der folgende Beispielcode funktioniert für die meisten der Konstanten UIColor
, aber zum Verwechseln nicht alle. Nämlich:Anomale Ergebnisse bekommen Farbkomponenten von einigen UIColors
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);
Die Ergebnisse für [UIColor yellowColor]
oben sind
r = 1,000000 1,000000 g = b = 0,000000 a = 1,000000, wie erwartet.
[UIColor redColor]
gibt r = 1,000000 0,000000 g = b = 0,000000 a = 1,000000, wieder, wie erwartet. Ähnlich für blueColor
und greenColor
.
jedoch, die Ergebnisse für [UIColor blackColor]
und [UIColor whiteColor]
scheinen völlig unregelmäßig, und ich weiß nicht, was ich falsch mache (wenn ja ich bin).
Nämlich gibt [UIColor blackColor]
r = 0,000000 g = 1,000000 b = 0,000000 a = 0,000000, der ein tranparent grün ist,
und [UIColor whiteColor]
geben r = 1,000000 g = 1,000000 b = 0,000000 a = 0,000000 , was ein transparentes Gelb ist.
Ich würde es begrüßen, wenn jemand könnte entweder:
(1) erklären, was ich falsch mache
(2) meine anomale Ergebnisse replizieren und sagen Sie mir, ich bin es nicht, oder
(3) Schlag mir mit einem großen Hammer über den Kopf, so dass es nicht mehr so weh tut.
Howard
Brilliant! Vielen Dank. Ich war vorher verwirrt durch den häufigen Verweis auf 'CGColorGetNumberOfComponents (color)' vor dem Aufruf von 'CGColorGetComponents (color)'. Jetzt verstehe ich warum. Übrigens, gibt es keine Möglichkeit, den * Namen * des obigen Modells auszudrucken, und nicht nur seinen Wert? – hkatz
Der Debugger wird Ihnen den Namen anzeigen, ich bin mir nicht sicher, ob Sie ihn ausdrucken können, da es sich um eine const Definition einer Zahl handelt. – pgb