Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Farben berechnen (https://www.delphipraxis.net/91912-farben-berechnen.html)

wicht 11. Mai 2007 19:41


Farben berechnen
 
Hallo Forum!

Nach längerer Zeit schreibe ich auch mal wieder etwas :wink: , ich hoffe mir kann jemand helfen.
Das Problem ist nämlich folgendes:

Ich bin absolut VirtualTreeView süchtig. Das Teil wohnt mittlerweile in allen Sachen, die ich so produziere. Aber da liegt auch ein kleiner Bock begraben. Und zwar möchte ich wechselnde Hintergrundbilder in dem View anzeigen, das klappt soweit auch ganz gut. Das Problem ist, dass die Farben davon variieren (richtig geschrieben?), und der Text ja immer schwarz ist. Darum müsste ich irgendwie berechnen, ob ein gegebener Farbwert eher Schwarz oder eher Weiß ist, damit ich den Text dementsprechend anzeigen kann. Dafür bräuchte ich irgendeinen Ansatz, habe hier etwas rumprobiert aber das hat irgendwie nicht wirklich geklappt.

Und falls jemand dann noch Ahnung vom VirtualTreeView hat: Ist es ohne großen Aufwand möglich, die Farbe einzelner Buchstaben zu ändern?

Würde mich auf Antworten zu der ersten Frage freuen, die zweite ist da eher Nebensache, weil ich mich damit selber noch nicht auseinandergesetzt habe. Danke im vorraus, und ein wunderschönes Wochenende..

Khabarakh 11. Mai 2007 19:46

Re: Farben berechnen
 
Schaue dir einmal bei Wikipedia die Formel für den Grauwert an - sobald dieser unter 0,5 fällt, solltest du auf weiße Schriftfarbe umsteigen. Beim zweiten Problem muss ich mich auf Raten beschränken, aber auch dieser TreeView wird sicherlich eine OwnerDraw-artige Option besitzen.

3_of_8 11. Mai 2007 19:46

Re: Farben berechnen
 
Ich würd sagen, es ist eher schwarz, wenn bei einem gegebenen Farbwert x gilt:
((x shr 16) and $FF)+((x shr 8) and $FF)+(x and $FF)<=(3*255 div 2)

Khabarakh 11. Mai 2007 19:49

Re: Farben berechnen
 
Nur ist eben blau nicht so hell wie rot und rot nicht so hell wie grün ;) .

PS: Interessant, dass heutzutage noch jemand 3Bit-Farben benutzt :mrgreen: .

3_of_8 11. Mai 2007 19:57

Re: Farben berechnen
 
Hoppala, wo du Recht hast... und das mit den unterschiedlichen Helligkeiten... hmm, daran hab ich ned wirklich gedacht. ^^

Alien426 11. Mai 2007 21:30

Re: Farben berechnen
 
RGB wird in etwa so in Graustufen umgesetzt:
R: 30%, G: 59%, B: 11%

Delphi-Quellcode:
FarbeRGB := ColorToRGB(Farbe);
Grau := Round(GetRValue(FarbeRGB) * 0.30 +
              GetGValue(FarbeRGB) * 0.59 +
              GetBValue(FarbeRGB) * 0.11);

Corpsman 11. Mai 2007 21:42

Re: Farben berechnen
 
Die Luminanzgleichung hat Alien426 ja schon geschrieben

wenn du die Ausrechnest und sich zwei Farben um mehr als 0.2 unterscheiden dann kann man die dann Gut Lesen.

Alles was sich weniger wie 0.2 unterscheided kann der Mensch nur sehr schlecht bis gar net erkennen.

wicht 12. Mai 2007 08:51

Re: Farben berechnen
 
Vielen lieben Dank für die ganzen Antworten :) Werde ich im laufe des Tages mal ausprobieren.
Schönes Wochenende erstmal noch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz