如何让线条动起来
编了一段程序,想看看插入法排序的过程,但是看到只是结果。
代码如下:
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
SetLength(unit1.ary,Image1.Width);
for i:=0 to form1.Image1.Width-1 do
begin
form1.Image1.Canvas.MoveTo(i,0);
unit1.ary[i]:=100-round(100*random);
form1.Image1.Canvas.LineTo(i,unit1.ary[i]);
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,j,k,l,t:integer;
begin
l:=form1.Image1.Width;
for i:=1 to l-1 do
begin
t:=unit1.ary[i];
for j:=1 to i do
begin
if t>unit1.ary[i-j] then break;
unit1.ary[i-j+1]:=unit1.ary[i-j];
///
form1.Image1.Canvas.Rectangle(i-j,0,i-j+1,form1.Image1.Height);
form1.Image1.Canvas.MoveTo(i-j,0);
form1.Image1.Canvas.LineTo(i-j,unit1.ary[i-j]);
form1.Image1.Canvas.MoveTo(i-j+1,0);
form1.Image1.Canvas.LineTo(i-j+1,unit1.ary[i-j+1]);
//SysUtils.Sleep(10);
form1.Canvas.TextOut(0,i,'~');
///
end;
unit1.ary[i-j+1]:=t;
end;
///
form1.Image1.Canvas.Rectangle(0,0,form1.Image1.Width,form1.Image1.Height);
for k:=0 to l-1 do
begin
form1.Image1.Canvas.MoveTo(k,0);
form1.Image1.Canvas.LineTo(k,unit1.ary[k]);
end;
//SysUtils.Sleep(10);
///
end;