RGB ist ein additives Farbsystem.
Um nun eine Abstufung zu ermitteln Bildet man einfach nur den Zwischenwert mittels Verhältnisgleichung:
Delphi-Quellcode:
function GetMixColor(adwStartColor, adwStopColor : Cardinal; afPos : Extended) : Cardinal;
function Clc(abStart, abStop : Byte) : Byte;
begin
Result := abStart + Round((abStop - abStart) * afPos);
end;
begin
Result :=
Rgb(Clc(GetRValue(adwStartColor), GetRValue(adwStopColor)),
Clc(GetGValue(adwStartColor), GetGValue(adwStopColor)),
Clc(GetBValue(adwStartColor), GetBValue(adwStopColor)));
end;
So könnte das zum Bsp aussehen.
btw.: Die Funktion selber ist etwas langsam und könnte etwas Tuning vertragen.