Иллюстрированный самоучитель по Delphi 7 для начинающих

Мультипликация

Под мультипликацией обычно понимается движущийся и меняющийся рисунок. В простейшем случае рисунок может только двигаться или только меняться.

Как было показано выше, рисунок может быть сформирован из графических примитивов (линий, окружностей, дуг, многоугольников и т. д.). Обеспечить перемещение рисунка довольно просто: надо сначала вывести рисунок на экран, затем через некоторое время стереть его и снова вывести этот же рисунок, но уже на некотором расстоянии от его первоначального положения. Подбором времени между выводом и удалением рисунка, а также расстояния между старым и новым положением рисунка (шага перемещения), можно добиться того, что у наблюдателя будет складываться впечатление, что рисунок равномерно движется по экрану.

Следующая простая программа, текст которой приведен в листинге 10.8, а вид формы – на рис. 10.15, демонстрирует движение окружности от левой к правой границе окна программы.

Иллюстрированный самоучитель по Delphi 7 для начинающих › Графические возможности Delphi › Мультипликация
Рис. 10.15. Форма программы Движущаяся окружность

Листинг 10.8. Движущаяся окружность.

unit mcircle_;
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;
implementation
{$R *.DFM}
var
Form1: TForml;
x,y: byte; // координаты центра окружности
dx: byte; // приращение координаты x при движении окружности
// стирает и рисует окружность на новом месте
procedure Ris;
begin
// стереть окружность
form1.Canvas.Pen.Color: = form1.Color;
form1.Canvas.Ellipse(x,y,x+10,y+10);
x: = x+dx;
// нарисовать окружность на новом месте
form1.Canvas.Pen.Color: = clBlack;
form1.Canvas.Ellipse(x,y, x+10, y+10);
end;
// сигнал от таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin Ris; end;
procedure TForm1.FormActivate(Sender: TObject);
begin
x: = 0;
y: = 10;
dx: = 5;
timer1.Interval: = 50;
// период возникновения события OnTimer – 0.5 сек
form1.canvas.brush.color: = forml.color;
end;
end.

Основную работу выполняет процедура Ris, которая стирает окружность и выводит ее на новом месте. Стирание окружности выполняется путем перерисовки окружности поверх нарисованной, но цветом фона.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.