Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Was ist eine negative TColor Farbe?

  Alt 21. Feb 2012, 01:46
Es kommt drauf an.

Bei einem 32-Bit-Bitmap entspricht das höchste Byte z.B. der Transparenz.
(innerhalb des Bildes könnte man sogar sowas wie ein 10x10x10, 10x10x12- oder 11x11x10-Farbschema verwenden, als RGB, HSV oder sonstwie)

Im 24-Bit-RGB-System für Delphi-Referenz durchsuchenTColor steckt in Byte 4 meist die zugrundeliegende Farbpalette.
http://www.delphipraxis.net/4067-rgb-tcolor-rgb.html
Delphi-Quellcode:
color
  cpSystemPalette = $00;
  cpActingPalette = $01;
  cpLogicalPalette = $02;
  cpNoColor = $1F;
  cpDefaultColor = $20;
  cpSystemColor = $FF;
cpNoColor or $FFFFFF {also $1FFFFFFF} = clNone {keine Farbe}
cpSystemColor or $xx {also $FF000000 bis $FF0000FF, aber aktuell nur bis etwa $FF00001F} = Systemfarben ala clScrollBar
cpSystemPalette or $xxxxxx = RGB-System {ebenso cpActingPalette oder cpLogicalPalette, nur mit Runden auf mögliche Farben der Hardware}

http://docwiki.embarcadero.com/VCL/de/Graphics.TColor
Zitat:
Hat das höchstwertige Byte den Wert Null, erhalten Sie eine Farbe, die derjenigen in der Systempalette am ähnlichsten ist. Ist das höchstwertige Byte Eins ($01 bzw. 0x01), ergibt das eine Farbe, die derjenigen in der aktiven Palette am ähnlichsten ist. Wenn Sie das höchstwertige Byte auf Zwei ($02 bzw. 0x02) setzen, wird der Wert an die ähnlichste Farbe in der logischen Palette des aktuellen Gerätekontexts angepasst.
Auch wenn TColor quasi als LongInt deklariert ist, ist es besser, wenn man dessen Werte als LongWord interpretiert, bzw. als 4 einzelne Byte.
Erstmal ist es mit dem Palette-Byte einfacher, wenn es auch ein Byte ist
und dann sind 4 Byte (LongWord) IMHO irgendwie verständlicher/übersichtlicher, als 3 Byte und 1 ShortInt (LongInt).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Feb 2012 um 02:05 Uhr)
  Mit Zitat antworten Zitat