Thema: Delphi TColor gewichtet mischen

Einzelnen Beitrag anzeigen

ulrich.b

Registriert seit: 21. Sep 2005
Ort: Kattau (AT)
79 Beiträge
 
Delphi 2009 Professional
 
#1

TColor gewichtet mischen

  Alt 22. Dez 2006, 13:38
Hallo!

Ich suche nach einer Funktion, die GEWICHTET zwei TColor Werte mischt.
Ich habe eine Funktion selbst gestrickt, die die Farben gewichtet addiert. Was haltet ihr davon? Die Funktion arbeitet nämlich nicht immer so wie ich es erwarte (die Zeilfarbe)....

Verbesserungsvorschäge????

Delphi-Quellcode:
type
  TColorRec = packed record
    case Integer of
      0: (Value: Longint);
      1: (Red, Green, Blue: Byte);
      2: (R, G, B, Flag: Byte);
  end;

// ....

function ColorAdd(C1: TColor; C2: TColor; WC1: Byte): TColor;
var
  Color1Rec: TColorRec;
  Color2Rec: TColorRec;

begin
  Color1Rec.Value := ColorToRGB(C1);
  Color2Rec.Value := ColorToRGB(C2);

  Result := 0;

  TColorRec(Result).R := EnsureRange((Color1Rec.R*WC1 + Color2Rec.R*($FF-WC1)) div $FF, 0, $FF);
  TColorRec(Result).G := EnsureRange((Color1Rec.G*WC1 + Color2Rec.G*($FF-WC1)) div $FF, 0, $FF);
  TColorRec(Result).B := EnsureRange((Color1Rec.B*WC1 + Color2Rec.B*($FF-WC1)) div $FF, 0, $FF);
end;
  Mit Zitat antworten Zitat