Ñîçäàéòå ôîðìó, äëÿ ñâîéñòâà 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.
Ñîõðàíèòå òåêñò ïðèëîæåíèÿ, îòêîìïèëèðóéòå è ïðîâåðüòå åãî ðàáîòó. Óáåäèòåñü, ÷òî â îêíå ïðèëîæåíèÿ âûïîëíÿåòñÿ ìíîãîêðàòíîå ïåðåðèñîâûâàíèå îêðóæíîñòè ñî ñìåùåíèåì ïîëîæåíèÿ öåíòðà.
|