- CharToString
- CharArrayToString
- CharArrayToStruct
- StructToCharArray
- ColorToARGB
- ColorToPRGB
- ColorToString
- DoubleToString
- EnumToString
- IntegerToString
- ShortToString
- ShortArrayToString
- TimeToString
- NormalizeDouble
- StringToCharArray
- StringToColor
- StringToDouble
- StringToInteger
- StringToShortArray
- StringToTime
- StringFormat
ColorToPRGB
Konvertiert den Typ color in den Typ uint, um eine Premultiplied-ARGB-Darstellung der Farbe zu erhalten – PRGB. Das Farbformat PRGB wird bei der Erstellung von Grafikressourcen, Textausgaben und in der CCanvas-Standardbibliotheksklasse mit dem Farbbildformat COLOR_FORMAT_ARGB_RAW verwendet (Komponenten werden vom Terminal nicht verarbeitet und müssen vom Nutzer korrekt vorbereitet werden).
uint ColorToPRGB(
|
Parameter
clr
[in] Wert der Farbe in einer Variablen vom Typ color.
alpha
[in] Wert des Alpha-Kanals, um die Farbe im Format ARGB zu erhalten. Der Wert reicht von 0 (die Farbe des überlagerten Pixels verändert die Darstellung des darunterliegenden Pixels überhaupt nicht) bis 255 (die Farbe wird vollständig überlagert und überdeckt die Farbe des darunterliegenden Pixels). Die Farbtransparenz in Prozent wird wie folgt berechnet: (1-alpha/255)*100 %, d. h. Je niedriger der Wert des Alpha-Kanals, desto transparenter ist die Farbe.
Rückgabewert
Farbdarstellung im ARGB-Format, wobei vier Bytes vom Typ uint die Werte Alfa, Rot, Grün, Blau (Alpha-Kanal, Rot, Grün, Blau) enthalten.
Hinweis
Wie unterscheidet sich PRGB von ARGB?
Es gibt zwei gängige Darstellungen von RGBA-Farben mit einem Alpha-Kanal:
- straight (normal) ARGB – RGB wird „unverändert“ gespeichert, Alpha ist separat;
- premultiplied (PRGB) – RGB ist bereits mit Alpha multipliziert.
Der Modus COLOR_FORMAT_ARGB_RAW geht davon aus, dass die Farbkomponenten bereits korrekt vorbereitet sind und das Terminal sie nicht „normalisiert/neu berechnet”. Daher sollte in Szenarien, in denen premultiplied Farben erwartet werden, PRGB übergeben werden, da es sonst zu visuellen Artefakten/Unstimmigkeiten beim Rendern kommen kann.
PRGB-Farben werden nach folgender Formel berechnet:
R = R * A / 255
G = G * A / 255
B = B * A / 255
A = A
Sonderfälle:
- Ist alpha = 255, stimmt das Ergebnis mit ColorToARGB(clr,255) überein (die Multiplikation verändert RGB nicht).
- Ist alpha = 0, wird das Ergebnis zu 0x00000000 (vollständig transparentes Pixel, RGB = 0).
Beispiel:
//+------------------------------------------------------------------+
|
Siehe auch
Resources, ColorToARGB, ResourceCreate(), TextOut(), Color type, Types char, short, int and long