Упражнение 5

Создайте форму, для свойства Caption которой задайте значение «Движущаяся окружность». Поместите на форму компонент Timer из палитры System. Для задания темпа смены кадров присвойте свойству Timerl.Interval значение 50 мс (0,05 с).

Для запуска анимации создайте обработчик события OnActivate, наступающего, когда форма получает или теряет фокус, например, при щелчке по ней мышью. Чтобы создать обработчик события, выберите в окне Инспектора объектов объект Form1 и на странице Events произведите двойной щелчок на пустом поле списка в событии OnActivate. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1.FormActivate(Sender: TObject);

Добавьте в раздел описания переменных переменные целого типа х и у – координаты центра окружности и dx – приращение координаты х при движении окружности.

var
Forml: TForml;
х,у: byte; {координаты центра окружности} dx: byte; {приращение координаты х при движении окружности}

Отредактируйте текст процедуры следующим образом:

procedure TForm1.FormActivate(Sender: TObject);
begin
x:=0; {начальная позиция рисунка}
y:=30;
dx:=3; {шаг изменения координаты х}
Timerl.Interval:=50; {период возникновения события OnTimer – 0.5 сек}
Form1.Canvas.Brush.Color:=Form1.Color; {цвет окраски канвы}
end;

Создайте процедуру обработчика события OnTimer, для чего выберите в окне Инспектора объектов объект Timer1 и на странице Events произведите двойной щелчок на пустом поле списка в событии Timer1Timer. В тело процедуры добавьте вызов процедуры рисования Ris.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Ris;
end;

Так как процедура должна быть описана до ее вызова, то выше этой процедуры в тексте программного модуля опишите процедуру рисования Ris:

procedure Ris; {рисование}
begin
Form1.Canvas.Pen.Color:=Form1.Color; {задать перу цвет формы}
Form1.Canvas.Ellipse(x,у,х+20,у+20); {стереть окружность – нарисовать ее цветом формы}
x:=x+dx; {перейти в следующую позицию}
Form1.Canvas.Pen.Color:=clBlack; {задать перу черный цвет}
Form1.Canvas.Ellipse(x,у,х+20,у+20); {нарисовать окружность на новом месте}
end;

Полный текст программного модуля будет выглядеть следующим образом:

unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y: byte; {координаты центра окружности}
dx: byte; {приращение координаты х при движении окружности}
implementation
{$R *.DFM}
procedure Ris; {рисование окружности}
begin
Form1.Canvas.Pen.Color:=Form1.Color: {задать перу цвет формы}
Form1.Canvas.Ellipse(x,у,х+20,у+20); {стереть окружность – нарисовать ее цветом формы}
x:=x+dx; {перейти в следующую позицию}
Form1.Canvas.Pen.Color:=clBlack; {задать перу черный цвет}
Form1.Canvas.Ellipse(x,у,х+20,у+20); {нарисовать окружность на новом месте}
end;
procedure TForm1.TimerlTimer(Sender: TObject);
begin
Ris; {вызов процедуры рисования окружности}
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
x:=0; {начальная позиция рисунка}
y:=30;
dx:=3; {шаг изменения координаты х}
Timer1.Interval:=50; {период возникновения события OnTimer – 0.5 сек}
Form1.Canvas.Brush.Color:=Form1.Color; {цвет окраски канвы}
end;
end.

Сохраните текст приложения, откомпилируйте и проверьте его работу. Убедитесь, что в окне приложения выполняется многократное перерисовывание окружности со смещением положения центра.

Добавить комментарий