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;