Среда программирования:
Lazarus 0.9.30 (Free Pascal)
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons, ExtCtrls, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; PaintBox1: TPaintBox; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { private declarations } // координаты прорисовки объекта. Доступны всем процедурам класса TForm1 x1, y1 , x2, y2: Integer; public { public declarations } // процедурa прорисовки белых и черных кружков procedure Circle(x, y: Integer; Col: TColor; M1, M2: Integer); end; var m:Integer; Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Timer1Timer(Sender: TObject); var newX, newY: real; begin // Закраска объекта цветом фона PaintBox1.Canvas.Brush.Color := clBlack; PaintBox1.Canvas.Rectangle(0,0, PaintBox1.Width, PaintBox1.Height); //движение белых кружков if x1>=34 then m:=1 else if x1 <=16 then m:=-1; x1:=x1-1*m; //движение черных кружков newX:=237+(x2-237)*cos(0.183625)-(y2-237)*sin(0.183625); newY:=237+(x2-237)*sin(0.183625)+(y2-237)*cos(0.183625); x2:=round(newX); y2:=round(newY); // Прорисовка объекта в новом месте Circle(x1,y1,clWhite, 0, 425); Circle(x2,y2,clBlack, -187, 187); Circle(x1,y1,clWhite, 50, 375); Circle(x2,y2,clBlack, -137, 137); Circle(x1,y1,clWhite, 100, 325); Circle(x2,y2,clBlack, -87, 87) ; Circle(x1,y1,clWhite, 150, 275) ; Circle(x2,y2,clBlack, -40, 40) ; Circle(x1,y1,clWhite, 197, 228) ; end; procedure TForm1.Button1Click(Sender: TObject); begin m:=-1; // установка начальных значений x1:=25; y1:=25; x2:=239; y2:=249; // Включение таймера - запуск анимации Timer1.Interval := 50; Timer1.Enabled := true; // прорисовка картинки по которой двигается объект PaintBox1.Canvas.Brush.Color := clBlack; PaintBox1.Canvas.Rectangle(0,0, PaintBox1.Width, PaintBox1.Height); end; procedure TForm1.FormCreate(Sender: TObject); begin DoubleBuffered := true; Timer1.Enabled := false; end; //прорисовка кружка procedure TForm1.Circle(x, y: Integer; Col: TColor; M1, M2: Integer); begin with PaintBox1.Canvas do begin Pen.Style := psClear; Brush.Color := Col; Ellipse(x + M1,y+ M1,x+M2,y+M2); end; end; end.
Прикрепленный файл | Размер |
---|---|
Исходный код и исполняемый файл | 946.04 кб |