RGB Werte zu CGColor konvertieren |
Geschrieben von: Philipp | |
TUESDAY, 11 MARCH 2008 02:00 | |
Ich persönlich arbeite gerne bei der Angabe von Farben mit allgemien üblichen RGB -Werten, wobei jeweils Werte von 0 bis 255 angegeben werden. Auf dem iPhone jedoch , wird meist mit dem struct CGColor gearbeitet. CGColor erwartet zwar auch Angaben zu rot, grün und blau, aber mit einem Wertebereich von 0 bis 1 als float . Zusätzlich wird dann noch ein Alpha-Wert ebenfalls von 0 bis 1 als float angegeben. Das Erstellen scheint mir etwas umständlich, wie folgend gezeigt: float r = 1.0f; // red
float g = 1.0f; // green float b = 1.0f; // blue float a = 1.0f; // alpha float arrColor[4] = {r,g,b,a}; // result is white struct CGColor* color = CGColorCreate(CGColorSpaceCreateDeviceRGB(), arrColor); Ich habe daher eine einfache kurze Funktion geschrieben, welche mir "normale" RGB-Werte in CGColor-Werte umrechnet und diese dann als CGColor struct zurück gibt. /**
float factor errechnet sich ganz einfach dadurch, wie oft die 255 in die 1 passt. Den Alpha-Wert habe ich einfach immer auf 1 gesetzt.* Convert RGB color to CGColor. * * @param r A red value from 0 to 255 * @param g A green value from 0 to 255 * @param b A blue value from 0 to 255 * * @ return CGColor pointer **/ struct CGColor* RGBToCGColor(int r, int g, int b) { float factor = 0.003921; float a = 1.0f; // alpha float arrColor[4] = {factor*r,factor*g,factor*b,a}; return CGColorCreate(CGColorSpaceCreateDeviceRGB(), arrColor); } Und angewand sieht das Ganze dann so aus: struct CGColor* color = RGBToCGColor(255,255,255); // result is white
Ist doch bei häufiger Anwendung wesentlich einfacher oder :-) Ihren Kommentar hinzufügen
|
|
LAST_UPDATED2 |