Tęcza (gradient)
WJJ
// Opracował Witold J.Janik; [email protected]
// ***
// Funkcja FnTecza umożliwia narysowanie
// tęczy przy zmianie [i] od [iMin] do [iMax]
// podziękowania dla Andrzeja Wąsika z [pl.comp.lang.delphi]
function FnTecza(iMin, iMax, i: Integer): TColor;
var
m: Double;
r, g, b, mt: Byte;
begin
m := (i - iMin)/(iMax - iMin + 1) * 6;
mt := (round(frac(m)*$FF));
case Trunc(m) of
0: begin
R := $FF;
G := mt;
B := 0;
end;
1: begin
R := $FF - mt;
G := $FF;
B := 0;
end;
2: begin
R := 0;
G := $FF;
B := mt;
end;
3: begin
R := 0;
G := $FF - mt;
B := $FF;
end;
4: begin
R := mt;
G := 0;
B := $FF;
end;
5: begin
R := $ff;
G := 0;
B := $FF - mt;
end;
end; // case
Result := rgb(R,G,B);
end;
Procedura jest super. Zwiezła i dziala. Napisalem program Tecza na jej podstawie ( robi różne rodzaje "teczy") Jest w dziale: download/kody/delphi. Planuje rozbudowe o "domain mapping".
Adam