Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

RGB-Gegenteil-Farbe ermitteln

  Alt 18. Jul 2018, 00:40
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;
Gruß vom KodeZwerg

Geändert von KodeZwerg (18. Jul 2018 um 00:42 Uhr)
  Mit Zitat antworten Zitat