Mein Problem hat sich gelöst.
Falls jemanden die Lösung interressiert:
Meine eigenen Beispieldateien habe mich darauf gebracht, das ich nur einen Farbverlauf
zwischen der Wunschfarbe und Schwarz bzw Weiß zeichnen müsste und dann die gesuchte Stufe entnehmen muss.
Daraus folgt:
Delphi-Quellcode:
if MASK < 128 then
OUT:= 0+round((IN-0)*MASK/128) else
if MASK > 128 then
OUT:= IN+round((255-IN)*(MASK-128)/128) else
if MASK = 128 then
OUT:=IN;
(muss für jeden
RGB-Kanal einzeln gerechnet werden)
basierend auf der einfachen Formel für einen Farbverlauf(hier in
RGB-Zerhackter Form):
Delphi-Quellcode:
procedure GradiendColor(rstart,gstart,bstart,rend,gend,bend,pos,length:Integer;var rout:Integer;var gout:Integer;var bout:Integer;);
begin
rout:=rstart+round((rend-rstart)*pos/length);
gout:=gstart+round((gend-gstart)*pos/length);
bout:=bstart+round((bend-bstart)*pos/length);
end;
Auch wenn ich die Lösung doch noch selbst herausbekommen habe, danke ich euch für eure hilfe.