pascalabcnet/TestSamples/FormatterTests/input/gradient2.pas

41 lines
916 B
ObjectPascal

// Градиентная заливка. Выполнена интерполяцией по каждой составляющей цвета.
uses GraphABC;
var i,j: integer;
r,g,b:array[0..2] of integer;
field:array[0..256*3] of Color;
function LinearInterp(a,b,fa,fb,x: integer): integer;
var t: real;
begin
t:=(x-a)/(b-a);
LinearInterp:=round(fa*(1-t)+fb*t);
end;
begin
r[0]:=255;
g[0]:=0;
b[0]:=255;
r[1]:=255;
g[1]:=255;
b[1]:=0;
r[2]:=0;
g[2]:=255;
b[2]:=255;{}
for i:=0 to 255 do
for j:=0 to 2 do
Field[i+255*j]:=RGB(LinearInterp(0,255,r[j],r[(j+1) mod 3],i),
LinearInterp(0,255,g[j],g[(j+1) mod 3],i),
LinearInterp(0,255,b[j],b[(j+1) mod 3],i));
SetWindowCaption('Градиент');
SetWindowSize(256*3,400);
LockDrawing;
for i:=0 to 256*3 do
Line(i,0,i,WindowHeight-1,Field[i]);
UnlockDrawing;
end.