Home Code-Schnipsel Grafik RGB Werte zu CGColor konvertieren

iPhone Gewinnspiel

RGB Werte zu CGColor konvertieren PDF Drucken E-Mail
Share
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.
/**
* 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);
 }
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.

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

Ihr Name:
Ihre Webseite:
Betreff:
Kommentar:
  Bild, welches den Sicherheitscode enthält
Sicherheitscode:
LAST_UPDATED2