Зразок 2 для анімації.
Побудувати модель руху Місяця навколо Землі (джерело http://astra.hmarka.net/program/delphi/4.pdf)
1. Завантажте систему візуального програмування Delphi. 2. Помістіть на форму об’єкт TTimer (закладка System палітри компонентів головного вікна Delphi) Встановіть його властивість Interval рівною 55. Через кожні 55 мілісекунд буде генеруватися подія OnTimer, що буде використовуватися для переміщення за формою компонента Shape2. 3. Помістіть на форму компонентів елемент TShape (закладка Additional) з ім'ям Shape1 (цей компонент буде зображувати Землю). Встановіть наступні значення для його властивостей: Shape - stCircle Height - 121 Width - 121 Left - 240 Top - 104 6.Виберіть властивість Brush і клацніть мишею на знаку + поряд з нею В Інспекторі Об'єктів додатково з'явилися дві властивості: Color і Style. Встановіть властивість Color рівним clBlue. 7. Виберіть властивість Pen і клацніть мишею на знаку + поряд з нею. В Інспекторі Об'єктів з'явилися додаткові властивості. Встановіть властивість Color рівним clBlue. (це колір лінії кола) 8. Помістіть на форму компонентів об’єкт TShape з ім'ям Shape2 (цей компонент буде зображувати Місяць). Встановіть наступні значення для його властивостей: Shape - stCircle Height – 41 Width – 41 Left – 400 Top – 152 9. Виберіть властивість Pen і клацніть мишею на знаку + поряд з нею. Встановіть властивість Color рівним clYellow. 10. Виберіть властивість Pen і клацніть мишею на знаку + поряд з нею. Встановіть властивість Color рівним clYellow. 11. У верхній частині форми розмістіть об’єкт TLabel. Його властивість Caption установіть рівним "Обертання Місяця навколо Землі". Встановіть властивості: Aligh – alTop Alignment - taTop AutoSize - True Transparent - True 13. Відкрийте властивість Font і встановіть: Шрифт - Courier New Накреслення - напівжирний Розмір – 16 Набір символів - кирилиця Форма матиме наступний вигляд 14.Створіть оброблювач події OnTimer
procedure TForm1.Timer1Timer(Sender: TObject); begin x:=x+0.1; Shape2.Left:=265+trunc(150*cos(x)); Shape2.Top:=150-trunc(150*sin(x)); end; Змінну x оголосіть в області оголошення змінних форми!
unit anime_orbita;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;
type TForm1 = class(TForm) Timer1: TTimer; Shape1: TShape; Shape2: TShape; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; x:real; implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject); begin x:=x+0.1; Shape2.Left:=265+trunc(150*cos(x)); Shape2.Top:=150-trunc(150*sin(x)); end;
end.
Зразок 3 (джерело http://astra.hmarka.net/program/delphi/10.pdf)
Поступова поява рисунку на формі після події (натискання лівої або правої кнопки миші)
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm} procedure StarLine(x0,y0,r:integer;Canvas:TCanvas); var p:array[1..11] of TPoint; a:integer; i:integer; begin a:=18; for i:= 1 to 10 do begin if(i mod 2=0) then begin p[i].x:=x0+Round(r/2*cos(a*2*pi/90)); p[i].y:=y0-Round(r/2*sin(a*2*pi/90)); end else begin p[i].x:=x0+Round(r*cos(a*2*pi/90)); p[i].y:=y0-Round(r*sin(a*2*pi/90)); a:=a+36;end; p[11].x:=p[1].x;p[11].y:=p[1].y; end; Canvas.Polyline(p); end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var r:integer; x0,y0:integer; begin if Button=mbLeft then Form1.Canvas.Pen.Color:=clBlue else Form1.Canvas.Pen.Color:=clYellow; Form1.Canvas.Pen.Width:=2; r:=50;x0:=Random(500);y0:=Random(500); StarLine(x0,y0,r,Form1.Canvas); end;
end.
|