В общем, проблему решил сам, вот код:
| Код | var Form1: TForm1; obr, bm, bm1: TBitMap; x, y: integer; r, a: single; xo, yo: integer; s, c: extended; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); begin btn1.Enabled:=False; tmr1.Enabled:=True; begin bm := TBitMap.Create; bm.LoadFromFile('02.bmp'); xo := bm.Width div 2; yo := bm.Height div 2; bm1 := TBitMap.Create; bm1.Width := bm.Width; bm1.Height := bm.Height; a := 0; repeat for y := 0 to bm.Height - 1 do begin for x := 0 to bm.Width - 1 do begin r := sqrt(sqr(x - xo) + sqr(y - yo)); SinCos(a + arctan2((y - yo), (x - xo)), s, c); bm1.Canvas.Pixels[x,y] := bm.Canvas.Pixels[ round(xo + r * c), round(yo + r * s)]; end; Application.ProcessMessages; end; img1.Canvas.Draw(0, 0, bm1); a := a + 0.05; Application.ProcessMessages; until Form1.Tag <> 0; bm.Destroy; bm1.Destroy; end; end; procedure TForm1.btn2Click(Sender: TObject); var r:tmodalresult; begin Form1.Tag := 1; btn2.Enabled:=false; tmr1.Enabled:=False; r:=MessageDlg('Âûïîëíåíèå ïðîãðàììû îñòàíîâëåíî',mtWarning,[mbOK],0); if r=mrOk then form1.Close; end; procedure TForm1.FormCreate(Sender: TObject); begin Form1.Color:=clBlack; img1.Left:=900; end; procedure TForm1.tmr1Timer(Sender: TObject); begin if img1.Left + img1.Width > 200 then begin img1.left:=img1.Left-1; end else begin tmr1.Enabled:=false; end end; end.
|
|