Warum zeigt die Farbeigenschaft von TPanel bei Verwendung eines Hexadezimalwerts die falsche Farbe an?

7

Ich verwende Delphi 2010 und wenn ich eine neue VCL-Anwendung erstelle, lege ein TPanel auf das Formular und setze seine "color" -Eigenschaft auf "clInactiveCaptionText", es zeigt die richtige Farbe an.

Korrekte Farbe:

Wenn ich jedoch den Hexadezimalwert für diese Farbe ($ 00434E54 --- R 67, G 78, B 84) eintrage, erscheint es falsch. Ich sollte beachten, dass das Ergebnis das gleiche ist, ob ich Runtime-Designs aktiviere oder nicht.

Falsche Farbe:

Irgendeine Idee darüber, warum diese Farbe nicht korrekt angezeigt wird, wenn ihr hexadezimaler Wert angegeben wird?

    
Mick 04.10.2011, 18:52
quelle

5 Antworten

19

RGB-Farbwerte werden tatsächlich als BGR angegeben.

Also wenn du willst:

  • rot müssen Sie $ 000000FF
  • angeben
  • grün müssen Sie $ 0000FF00
  • angeben
  • blau müssen Sie $ 00FF0000
  • angeben
Marjan Venema 04.10.2011, 18:59
quelle
16

Wie andere angegeben haben, werden die RGB-Werte intern als BGR gespeichert (dh TColor -Wert oder wie Windows ein COLORREF nennt), deshalb geben Sie einen benutzerdefinierten Farbcode an Erhalte eine andere Farbe.

Um bei der Angabe von Farben in RGB-Form Ihre Gesundheit zu bewahren, können Sie die Funktion RGB () aus der Windows-Einheit verwenden; Dies akzeptiert Parameter in der "natürlichen" / intuitiven RGB-Reihenfolge (als Byte-Werte) und ergibt einen entsprechenden TColor / COLORREF -Wert:

%Vor%

oder wenn hex einfacher ist:

%Vor%     
Deltics 04.10.2011 19:11
quelle
7

Dies liegt daran, dass Sie einen TColor Wert in einem RGB-Format festlegen, Sie müssen BGR verwenden stattdessen.

    
RRUZ 04.10.2011 19:01
quelle
0

Eigentlich ist Tcolor RGBA-Farbformat und auch $FF000000 ist der Alphakanal also:

  • Um einen roten Kanal zu erhalten, können Sie $ 000000FF
  • erhalten
  • Um einen grünen Kanal zu erhalten, können Sie $ 0000FF00
  • erhalten
  • Um bluechanel zu bekommen, können Sie $ 00FF0000
  • bekommen
  • Um den alpha chanel chanel zu erhalten, können Sie $ FF000000
  • erhalten

Und Sie können den tcolor-Wert einfach in rgb umwandeln:

%Vor%

Dies funktioniert auch in plattformübergreifenden FMX-Delphi-Apps.

    
peiman F. 09.09.2016 11:30
quelle
0
%Vor%

Mit dieser einfachen Funktion können Sie es einfacher machen:

%Vor%     
Wellington Telles Cunha 13.04.2017 12:27
quelle

Tags und Links