Also ich habe das so gelöst:
Delphi-Quellcode:
Function MergeColors (C0,C1 : TColor; I,N : Integer) : TColor;
Begin
If N=1
Then
Result := c0
Else
Result :=
RGB (
(GetRValue(c1)*I + GetRValue(c0)*(N-I))
div n,
(GetGValue(c1)*I + GetGValue(c0)*(N-I))
div n,
(GetBValue(c1)*I + GetBValue(c0)*(N-I))
div n
);
end;
Aufruf mit (z.B.):
Mischfarbe := MergeColors (Color1, Color2, 7,10);
Die Mischfarbe wird aus 7 Teilen Color1 und 3 Teilen Color2 gemischt (7+3=10). Ob das dem physionomischen (oder wie das heisst) Farbempfinden entspricht, weiss ich nicht, aber mir reicht es.
Delphi-Quellcode:
MergeColors (C1,C2,0,N); // Liefert C2
MergeColors (C1,C2,N,N); // Liefert C1
Es ist ja eigentlich die gleiche Lösung.