Hallo,

aähem... sorry dass mir das jetzt erst einfällt, aber... Ich hatte mal das Problem, dass ich ein Panel hatte, dessen Farbe man ändern konnte. Darauf war ein Text - in Komplenetärfarbe. Da Problem: Bei mittlerem Grau ist die Komplenetärfarbe fast die selbe - Kontrast annähernd null.
Also habe ich damals noch nen 2. Algo entwickelt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function Contrast(Color: TColor): TColor; var R, G, B: Integer; begin Color := ColorToRgb(Color); R := Color and $FF; G := (Color and $FF00) shr 8; B := (Color and $FF0000) shr 16; if ((R * 0.239) + (G * 0.686) + (B * 0.075) >= 127.5) then Result := clBlack else Result := clWhite; end; |
Der Rückgabewert ist entweder schwarz oder weiß - je nach dem, was grade den besseren Kontrast liefert.