Pipette

TColor

Das in der Programmierung mit Lazarus oder Delphi verwendete TColor beruht ebenfalls auf dem RGB-Farbmodell, verrechnet die RGB-Werte aber zu einer einzigen Zahl, die Werte zwischen 0 und 16777215 annehmen kann. Dies unterscheidet TColor von allen anderen vorgestellten Farbmodellen, die die Farben ansonsten alle mit einer Kombination aus mehreren Zahlen ausdrücken (auch wenn diese Zahlen im Falle der hexadezimalen Schreibweise der RGB-Notation in der Form #RRGGBB zusammengezogen werden).

Umrechnung aus dem oder in das RGB-Farbmodell

Die Werte R, G und B stehen dabei in folgender Beziehung zu dem TColor-Wert:

TColor = R or (G shl 8) or (B shl 16)

Bei der Umrechnung von einem TColor-Wert in die Bestandteile R, G und B gilt folgende Beziehung:

R = TColor and $FF
G = (TColor shr 8) and $FF
B = (TColor shr 16) and $FF

Die Operatoren "shl" (Shift Links), "shr" (Shift Rechts), "and" und "or" sind bitweise Operatoren. Das bedeutet, dass sie auf der binären Ebene (zum Beispiel 1101010 oder 1001) anstatt auf der numerischen Ebene (zum Beispiel 2, 17 oder 345) arbeiten. Ein Links-Shift (shl) bedeutet eine Verschiebung der Einsen und Nullen um den Wert dahinter nach links, ein Rechts-Shift (shr) eine Verschiebung der Einsen und Nullen um den Wert dahinter nach rechts. Das bitweise Oder (or) wird auf zwei Bitfolgen gleicher Länge angewendet indem es Paare gleicher Stelle mit einem logischen Oder verknüpft (Beispiel: 1010 or 1100 = 1110). Das bitweise Und (and) wird auf zwei Bitfolgen gleicher Länge angewendet indem es Paare gleicher Stelle mit einem logischen Und verknüft. Hier ist das Ergebnis 1 falls beide Bits 1 sind, ansonsten 0 (Beispiel: 1010 and 1100 = 1000).

Anzahl darstellbarer Farben

Mit einem TColor-Wert können maximal 16777216 unterschiedliche Farben dargestellt werden. Dies entspricht 8 Bit pro Rot-, Grün- und Blau-Kanal (jeweils 0 bis 255). Die Anzahl der maximal möglichen Farben ist damit dieselbe wie in der hexadezimalen Schreibweise #RRGGBB, bei der auch ein Byte für jeden der drei Farbkanäle verwendet wird.

Im Programm Pipette wird der TColor-Wert in der vorletzten Zeile ("TColor") angezeigt.

Verwandte Themen