I
ignessa
Помогите,пожалуйста!!Нужно полное описание действий при создании анимации на языке программирования в Delphi 7.
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
Незаметил <_< ,нужна анимация любая:аквариум с рыбками,ползающая божья коровка и т.д
Мда... Самое сложное, это просчитать координаты... В случае с вашей божьей коровкой, советую: взять лист бумаги в клеточку, разметить по полям пиклесы,я вот сделала божью коровку,но что-то не получается.наверно с расчетами напутала...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x, y: integer; // координаты опорной точки
implementation
{$R *.dfm}
procedure Insert(x, y: integer);
begin
// контук кораблика
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(x, y - 10);
Form1.Canvas.LineTo(x + 50, y - 10);
Form1.Canvas.LineTo(x + 55, y - 15);
Form1.Canvas.LineTo(x + 85, y - 15);
Form1.Canvas.LineTo(x + 70, y);
Form1.Canvas.LineTo(x, y);
// палубные надстройки
Form1.Canvas.MoveTo(x + 15, y - 10);
Form1.Canvas.LineTo(x + 20, y - 15);
Form1.Canvas.LineTo(x + 20, y - 20);
Form1.Canvas.LineTo(x + 65, y - 20);
Form1.Canvas.LineTo(x + 65, y - 15);
Form1.Canvas.MoveTo(x + 25, y - 15);
Form1.Canvas.LineTo(x + 45, y - 15);
Form1.Canvas.Rectangle(x + 40, y - 20, x + 55, y - 25);
// труба
Form1.Canvas.Rectangle(x + 35, y - 20, x + 40, y - 35);
// иллюминаторы
Form1.Canvas.Ellipse(x + 55, y - 10, x + 60, y - 5);
Form1.Canvas.Ellipse(x + 65, y - 10, x + 70, y - 5);
// мачта
Form1.Canvas.MoveTo(x + 50, y - 25);
Form1.Canvas.LineTo(x + 50, y - 60{50});
// флажок на мачте
Form1.Canvas.LineTo(x + 30, y - 60);
Form1.Canvas.LineTo(x + 40, y - 58);
Form1.Canvas.LineTo(x + 30, y - 55);
Form1.Canvas.LineTo(x + 50, y - 55);
// тросы
Form1.Canvas.MoveTo(x + 85, y - 15);
Form1.Canvas.LineTo(x + 50, y - 50);
Form1.Canvas.LineTo(x, y - 10);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Стираем старый кораблик
Form1.Canvas.Pen.Color := Form1.Color;
Insert(x,y);
// Смещаем координаты опорной точки
if (Form1.ClientWidth > x) then
Inc(x,5)
else
begin
// Если вышли за границы экрана,
// назначаем новые начальные координаты
x := 0;
y := Random(100) + 100;
end;
// Рисуем новый кораблик
Form1.Canvas.Pen.Color := clYellow;
Insert(x,y);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Width := 300;
Form1.Height := 300;
x := 0;
y := Random(100) + 100;
Form1.Color := clNavy;
Timer1.Interval := 50;
end;
end.
procedure DrawArc(ACanvas: TCanvas; x,y,start_angle,end_angle,rx,ry:integer);
var s_a,e_a:real;
begin
s_a:=(start_angle-90)*pi/180;
e_a:=(end_angle-270)*pi/180;
ACanvas.Arc(x-rx,y-ry,x+rx,y+ry,x-round(sin(s_a)*rx),y-round(cos(s_a)*ry),x+round(sin(e_a)*rx),y+round(cos(e_a)*ry));
end;
procedure drawwin(Canvas:TCanvas; x,y:integer);
var r,h,r2:integer;
i,k:integer;
begin
r:=100;
h:=100;
r2:=50;
//////////////////fon
with canvas do
begin
///////////////red
pen.Width:=3;
for k:=0 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(165,0,0);
4..6: pen.Color:=rgb(255,0,0);
7..9: pen.Color:=rgb(255,66,0);
10..12: pen.Color:=rgb(255,123,0);
13..15: pen.Color:=rgb(255,66,0);
end;
DrawArc(canvas,r-(((h-k) div 3))+h div 3+x - r+1 -r2,h+r-k+y-1-r -r2,45+i*5,45+(i+1)*5,r,r);
end;
pen.Width:=3;
for k:=h-2 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(165,0,0);
4..6: pen.Color:=rgb(255,0,0);
7..9: pen.Color:=rgb(255,66,0);
10..12: pen.Color:=rgb(255,123,0);
13..15: pen.Color:=rgb(255,66,0);
end;
DrawArc(canvas,r-(((h-k) div 3))+h div 3+x - r+1 -r2,h+r-k+y-1-r -r2,45+i*5,45+(i+1)*5,r,r);
end;
/////////////////////////////
///////////////blue
pen.Width:=3;
for k:=0 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(0,0,165);
4..6: pen.Color:=rgb(0,0,255);
7..9: pen.Color:=rgb(0,66,255);
10..12: pen.Color:=rgb(0,123,255);
13..15: pen.Color:=rgb(0,66,255);
end;
DrawArc(canvas,r-(((h-k) div 3))+x-r-r2,2*h+r+r div 10-k+y-r-r2,45+i*5,45+(i+1)*5,r,r);
end;
pen.Width:=1;
for k:=h-2 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(0,0,165);
4..6: pen.Color:=rgb(0,0,255);
7..9: pen.Color:=rgb(0,66,255);
10..12: pen.Color:=rgb(0,123,255);
13..15: pen.Color:=rgb(0,66,255);
end;
DrawArc(canvas,r-(((h-k) div 3))+x-r-r2,2*h+r+r div 10-k+y-r-r2,45+i*5,45+(i+1)*5,r,r);
end;
/////////////////////////////
///////////////green
pen.Width:=3;
for k:=h downto 0 do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(0,115,0);
4..6: pen.Color:=rgb(0,165,0);
7..9: pen.Color:=rgb(0,255,0);
10..12: pen.Color:=rgb(82,255,82);
13..15: pen.Color:=rgb(0,255,0);
end;
DrawArc(canvas,r+(((h-k) div 3))+r+h div 3+x-r - r div 4-5-r2,k-r div 2+y+r-r+r div 10+2-r2,270-45+i*5,270-45+(i+1)*5,r,r);
end;
pen.Width:=1;
for k:=h-2 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(0,115,0);
4..6: pen.Color:=rgb(0,165,0);
7..9: pen.Color:=rgb(0,255,0);
10..12: pen.Color:=rgb(82,255,82);
13..15: pen.Color:=rgb(0,255,0);
end;
DrawArc(canvas,r+(((h-k) div 3))+r+h div 3+x-r - r div 4-5-r2,k-r div 2+y+r-r+r div 10+2-r2,270-45+i*5,270-45+(i+1)*5,r,r);
end;
/////////////////////////////
///////////////yellow
pen.Width:=3;
for k:=0 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(165,82,0);
4..6: pen.Color:=rgb(255,189,0);
7..9: pen.Color:=rgb(255,255,0);
10..12: pen.Color:=rgb(255,255,82);
13..15: pen.Color:=rgb(255,255,0);
end;
DrawArc(canvas,r+(((h-k) div 3))+r+h div 3+x-r + r div 10-3-r2,k-r div 2+y+r-r+r div 10-r-10-r2,270-45+i*5,270-45+(i+1)*5,r,r);
end;
pen.Width:=1;
for k:=h-2 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(165,82,0);
4..6: pen.Color:=rgb(255,189,0);
7..9: pen.Color:=rgb(255,255,0);
10..12: pen.Color:=rgb(255,255,82);
13..15: pen.Color:=rgb(255,255,0);
end;
DrawArc(canvas,r+(((h-k) div 3))+r+h div 3+x-r + r div 10-3-r2,k-r div 2+y+r-r+r div 10-r-10-r2,270-45+i*5,270-45+(i+1)*5,r,r);
end;
end;
/////////////////////////////
end;
procedure TForm6.Button1Click(Sender: TObject);
begin
drawwin(image1.Canvas, 200,200);
///центр задаётся примерно
end;
Я знаю, мне за него 12 из 12 поставили(это было сделано на паскале, не на делфи), фишка в том что 256 цветов вместо 16.Шикарный логотип!
можно мне картинкой? ну т.е. скрином.Шикарный логотип!
Можно :facepalm:можно мне картинкой? ну т.е. скрином.
Это можно делать 128-ю способами.Помогите пожалуйста... мне Нужно полное описание действий при создании анимации на языке программирования в Delphi 7 полет самолета...
Обучение наступательной кибербезопасности в игровой форме. Начать игру!