AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Was ist eine negative TColor Farbe?

Was ist eine negative TColor Farbe?

Ein Thema von Popov · begonnen am 20. Feb 2012 · letzter Beitrag vom 21. Feb 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

Was ist eine negative TColor Farbe?

  Alt 20. Feb 2012, 22:57
Also ich habe mich noch nie um das vierte Byte des TColor gekümmert. Ich dachte immer es hat etwas mit einem Alphakanal zu tun, laut OH aber nicht. Aber das ist ja nicht die Frage. TColor wird so definiert: type TColor = -$7FFFFFFF-1..$7FFFFFFF; . Ok, das ist ein 32 Bit Integer, das erste Bit ist somit das Vorzeichen. Aber was ist dann eine negative Farbe? Oder ist der Wert $FFFFFFFE = Farbe -1 = 1?
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.308 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Was ist eine negative TColor Farbe?

  Alt 20. Feb 2012, 23:57
Die Deklaration ist einfach nur identisch mit Integer, und der eigentlich wichtige Teil ist, dass es 32 Bit sind. Das letzte Bit wird bei Farben nie wirklich als Vorzeichen interpretiert. Überhaupt ist das höchstwertige Byte reine Interpretationssache, und es gibt keine allgemeingültige Festlegung für dessen Verwendung. Manche Programme/Formate nutzen es als Art "Tag" um zwischen verschiedenen Farb-Klassen zu unterscheiden, andere wieder als Alphakanal, wieder andere ganz anders. 24 Bit würden einfach reichen, sind aber für Prozessoren so arg unhandlich. An sich ist es über, und wird daher recht frei verwendet. Das Minus ist nur der Art der Deklaration geschuldet, und hat nichts mit negativen Farben zu tun.
Es gibt zwar das subtraktive Farbsystem (CYM(K)), das bezieht sich aber darauf, dass mit hinzufügen von Farbanteilen das reflektierte Spektrum verkleinert wird (Körperfarbsystem vs. Lichtfarbsystem). Das ist ne ganz andere Nummer. Vergiss das Minus einfach
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Was ist eine negative TColor Farbe?

  Alt 21. Feb 2012, 00:20
Man lernt ja nie aus, denn ich dachte immer, dass es sich bei den negativen Werten um Systemfarben handelt a la clBackground, etc.

weitere farben registrieren
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
31.278 Beiträge
 
Delphi XE3 Professional
 
#4

AW: Was ist eine negative TColor Farbe?

  Alt 21. Feb 2012, 00: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.
RGB -> TColor -> RGBrgb-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).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (21. Feb 2012 um 01:05 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2016 by Daniel R. Wolf