Hallo, gibt es eine Möglichkeit einen Farbwert ins Gegenteil zu verwandeln?
Beispiel: aus Input Farbe Schwarz wird Output Farbe weiß.
Zur Zeit nutze ich das hier: (nicht von mir, aus CodeLib)
Delphi-Quellcode:
procedure EdBackColor(FontC: TColor; var EditableColor,
ReadOnlyColor: TColor);
// Calculate the luminance of the color using the simplified formula
// luminance = 0.25*red + 0.625*green + 0.125*blue
// If greater than 0.5, use a dark background
var
R, G, B: Integer;
begin
R := GetRValue(FontC) * 2;
G := GetGValue(FontC) * 5;
B := GetBValue(FontC);
if R + G + B then
begin
EditableColor := clWhite;
ReadOnlyColor := clSilver;
end
else
begin
EditableColor := clBlack;
ReadOnlyColor := clDkGray;
end;
end;
Aber das ermittelt nur ob Input zu Hell oder Dunkel gehört, ich würde das gerne etwas professioneller haben wollen so das nur ein Wert dabei ausgespuckt wird aber habe keine Ahnung wie.
Mein Erster Gedanke wäre die R G B values einfach umdrehen, ist das der Richtige Weg?
Beispiel:
Delphi-Quellcode:
function InvertColor(Input: TColor): TColor;
var
R, G, B: Byte;
begin
R := 255 - GetRValue(Input);
G := 255 - GetGValue(Input);
B := 255 - GetBValue(Input);
Result :=
RGB(R, G, B);
end;