Um die Helligkeit einer Farbe zu ermitteln werden die Rot, Grün und Blau Anteile unterschiedlich bewertet um dem menschlichen Auge möglichst nahe zu kommen.
Mein Code verwendet dazu die Faktoren 61(rot), 174(grün) und 21(blau):
Delphi-Quellcode:
function Intensity(Color: TColor): Integer;
begin
Color := ColorToRGB(Color);
Result := GetBValue(Color) * 21
// Blue
+ GetGValue(Color) * 174
// Green
+ GetRValue(Color) * 61;
// Red
Result := Result
shr 8;
end;
function GreyColor(Color: TColor):TColor;
var
i : Integer;
begin
i := Intensity(Color);
Result :=
RGB(i, i, i);
end;
Die Faktoren 54(rot), 182(grün) und 19(blau) aus dem Codebeispiel im Beitrag#1 dürften ähnliche Ergebnise bringen.
Wenn man alle Farbanteile mit 1/3 einrechnet dürfte das Ergebnis leicht unnatürlich aussehen.