ColorToARGB

Konvertiert den Typ color in den Typ uint um Farbdarstellung ARGB zu erhalten. Format ARGB wird für Erstellung einer graphischen Ressource, Textausgabe und in der CCanvas-Klasse der Standardbibliothek.

uint  ColorToARGB(
   color  clr,          // Die Farbe im Format color, die Sie konvertieren wollen
   uchar  alpha=255     // Alpha-Kanal, der Farbtransparenz verwaltet
   );

Optionen

clr

[in]  Farbwert in der Variable vom Typ color.

alpha

[in]  Wert des Alpha-Kanals, um die Farbe im Format ARGB zu erhalten. Es wird durch den Wert von 0 (Farbe des anlegenden Pixels ändert nicht die Farbe des zugrunde liegenden Pixels) bis 255 (Farbe des anlegenden Pixels voll bedeckt die Farbe des zugrunde liegenden Pixels) angegeben. Farbtransparenz in Prozent wird als (1-alpha/255)*100% berechnet, d.h. je weniger der Alpha-Wert ist, desto mehr transparent die Farbe ist.

Rückgabewert

Farbdarstellung im Format ARGB, wo in vier Bytes vom Typ uint Werte Alfa, Red, Green, Blue (Alpha, rot, grün, blau) vorgeschrieben sind.

Hinweis

Das Grundformat für Beschreibung der Pixelfarbe auf dem Bildschirm in Computergrafik ist RGB, wo die Farbkomponenten nach den Namen der Primärfarben Rot (Red), Grün (Green) und Blau (Blue) gesetzt werden. Jede Komponente wird durch ein einzelnes Byte, das die Sättigung der Farbe im Bereich von 0 bis 255 (0x00 bis 0xFF hexadezimal) spezifiziert, beschrieben. Da Weiß enthält alle Farben, wird sie als 0xFFFFFF beschrieben, das heißt, jede der drei Komponenten ist im maximalen Wert 0xFF repräsentiert.

Aber in einer Reihe von Aufgaben erforderlich ist, Farbtransparenz anzugeben, um zu beschreiben, wie das Bild aussieht, wenn die Farbe mit einem gewissen Transparenz auf das Bild gelegen ist. In solchen Fällen wird das Konzept der alpha-Kanal (Alpha) benutzt, der als zusätzliche Komponente zum Format RGB eingeführt wird. Schema vom ARGB Format ist unten gezeigt.

ARGB

ARGB-Werte werden typischerweise in hexadezimal Format angegeben, bei dem jedes Paar von Ziffern den Wert der Kanälen Alpha, Red, Green und Blue repräsentiert. Zum Beispiel ARGB-Farbe 80FFFF00 bedeutet gelb mit Opazität von 50,2%. Am Anfang gibt es 0x80, was 50,2% Alpha-Wert angibt, da es 50,2% vom Wert 0xFF ist; weitere bedeutet erste Paar FF den maximalen Wert der roten Komponente; das nächste Paar FF gibt der gleiche Effekt der grünen Komponente an; und das letzte Paar 00 ist der Mindestwert von Blauanteil (kein blau). Die Zugabe von grün und rot gibt gelb. Wenn der Alpha-Kanal nicht verwendet wird, kann die Aufnahme zu 6 Ziffern RRGGBB reduziert werden, weshalb die Werte des Alpha-Kanals in den oberen Bits der Integer-Typ uint gespeichert werden.

Je nach dem Kontext können die Hexadezimalzahlen mit dem Präfix '0x' oder '#', beispielsweise 80FFFF00 oder 0x80FFFF00 oder #80FFFF00 aufgezeichnet werden.

Beispiel:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Transparenz angeben
   uchar alpha=0x55;  // Wert x55 bedeutet 55/255=21.6 % von Transparenz   
   //--- Konvertierung in ARGB für clrBlue
   PrintFormat("0x%.8X - clrBlue",clrBlue);
   PrintFormat("0x%.8X - clrBlue ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrBlue,alpha));
   //--- Konvertierung in ARGB für clrGreen
   PrintFormat("0x%.8X - clrGreen",clrGreen);
   PrintFormat("0x%.8X - clrGreen ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrGreen,alpha));
   //--- Konvertierung in ARGB für clrRed
   PrintFormat("0x%.8X - clrRed",clrRed);
   PrintFormat("0x%.8X - clrRed ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrRed,alpha));
  }

Sehen Sie auch

Ressourcen, ResourceCreate(), TextOut(), Typ color, Typen char, short, int und long