procedure TForm1.FormPaint(Sender: TObject);
var bmp: TBitmap;
i, j: Integer;
b: Byte;
pCol: PByte;
y: Double;
t: Int64;
tn, tnsoft: Double;
begin
t := GetTickCount64;
tn := (t mod 2000) / 2000;
tnsoft := abs(tn - 0.5) * 2;
bmp := TBitmap.Create;
bmp.PixelFormat := pf24bit;
bmp.Width := ClientWidth;
bmp.Height := ClientHeight;
try
bmp.BeginUpdate();
for j := 0 to bmp.Height - 1 do
begin
pCol := bmp.ScanLine[j];
for i := 0 to bmp.Width - 1 do
begin
y := j;
y := y + (tnsoft-0.5)*20*sin((i-t*0.1)*Pi*0.02);
if (((i div 100) mod 2) xor ((Round(y) div 100) mod 2)) = 0 then
b := 255
else
b := 0;
pCol^ := b; Inc(pCol);
pCol^ := b; Inc(pCol);
pCol^ := b; Inc(pCol);
end;
end;
bmp.EndUpdate();
Canvas.Draw(0,0,bmp);
finally
bmp.Free;
end;
end;