Tęcza (gradient)

WJJ

// Opracował Witold J.Janik; WJJ@CAD.PL
// ***
// 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;

1 komentarz

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