Построение колоннады

Построение колоннады

Анимированная сборка колоннады - логотипа Delphi.

Разместите на форме компонент Paintbox1: TPaintbox и компонент Timer1: TTimer с вкладки System, а также кнопку Button1: TButton с вкладки Standart. В инспекторе объектов (Object Inspector) выставьте начальные значения для компонентов.

Form1
  Width: 540
  Height: 520
 
Paintbox1
  Width: 510
  Height: 430
  Top: 10
  Left: 10
 
Button1
  Caption: OK
  Top: 450
  Left: 8
 
Timer1
  Interval: 5
  Enabled: False

Переключитесь клавишей F12 в редактор кода и создайте в разделе Private класса TForm1 две процедуры procedure column(x:Integer); procedure entablement(x:Integer);

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Button1: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    procedure column(x:Integer);
    procedure entablement(x:Integer);
  public
    { Public declarations }
  end;

Нажмите CTRL+SHIFT+C, данная компбинация автоматически создаст заголовок процедур в разделе implementation. Впишите в них следующий код:

procedure TForm1.column(x: Integer);
Var i: Integer;
begin
with PaintBox1.Canvas do begin
    Brush.Color := RGB(100, 100, 100);
    Pen.Color := RGB(0,0,0);
    Rectangle(25+x, 175, 55+x, 400);
    acolomn := 0;
    for i := 1 to 5 do
    begin
      MoveTo(30+acolomn+x, 175);
      LineTo(30+acolomn+x, 400);
      acolomn := acolomn + 5;
    end;
    Rectangle(10+x, 175, 70+x, 185);
    Rectangle(10+x, 390, 70+x, 400);
    Ellipse(5+x, 175, 25+x, 195);
    Ellipse(55+x, 175, 75+x, 195);
    Ellipse(5+x, 380, 25+x, 400);
    Ellipse(55+x, 380, 75+x, 400);
    Brush.Color:=RGB(0,0,0);
    Pen.Color := RGB(0,0,0);
end;
 
end;
 
procedure TForm1.entablement(x: Integer);
begin
with PaintBox1.Canvas do begin
  Pen.Color := RGB(0,0,0);
  Brush.Color := RGB(100, 100, 100);
  Polygon([Point(50, 50+y),Point(50, 75+y), Point(450, 75+y),
           Point(450, 50+y), Point(250, 5+y)]);
  Brush.Color := RGB(150, 150, 150);
  Polygon([Point(80, 50+y), Point(420, 50+y), Point(250, 15+y)]);
  Brush.Color:=RGB(0,0,0);
  Pen.Color := RGB(0,0,0);
end;
end;

Программа будет использовать ряд глобальных перемен, которые необходимо объявить в разделе Var

var
  Form1: TForm1;
  x, acolomn, x1, x2, x3, y : Integer;

Теперь вернитесь на форму (Клавиша F12) и сделайте двойной щелчок на компоненте Timer1 - это создаст в редакторе кода процедуру procedure TForm1.Timer1Timer(Sender: TObject); в которую вписываем следующее:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
with PaintBox1.Canvas do begin
  Brush.Color:=RGB(0,0,0);
  Pen.Color := RGB(0,0,0);
  if x < 360 then begin  //условие перемещения первой колонны
   Rectangle(0+x,175,80+x,400);
   column(x);
   x:=x+3;
  end else
  if x1 < 260 then begin    //условие перемещения второй колонны
   Rectangle(0+x1,175,80+x1,400);
   column(x1);
   x1:=x1+3;
  end else
  if x2 < 160 then begin  //условие перемещения третьей колонны
   Rectangle(0+x2,175,80+x2,400);
   column(x2);
   x2:=x2+3;
  end else
  if x3 < 60 then begin  //условие перемещения четвертой колонны
   Rectangle(0+x3,175,80+x3,400);
   column(x3);
   x3:=x3+3;
  end else
  if y < 105 then begin  //условие перемещения антаблемента
   Rectangle(50,0+y,455,75+y);
   entablement(y);
   y:=y+5;
  end else
   Timer1.Enabled := False;   //остановка таймера
end;
end;

Точно также сделайте двойной щелчок на компоненте Button1 - это создаст в редакторе кода процедуру procedure TForm1.Button1Click(Sender: TObject); в которую вписываем следующее:

procedure TForm1.Button1Click(Sender: TObject);
begin
  x := 0; x1 := 0; x2 := 0; x3 := 0; y := 0;
  with PaintBox1.Canvas do begin
    Brush.Color:=RGB(0, 0, 0);
    Rectangle(0,0, PaintBox1.Width, PaintBox1.Height);   //очистка экрана
    Brush.Color:=RGB(50,50,50);
    Pen.Color := RGB(50,50,50);
    Rectangle(0,400, PaintBox1.Width, PaintBox1.Height);   //отрисовка земли
  end;
  Timer1.Enabled := True;  //запуск  таймера
end;

Запустите программу. Run (F9).

СКАЧАТЬ ПРОГРАММУРазмер
Урок построение колоннады (301)912.5 кб

Отправил Сб, 07/15/2017 - 19:36

We sell the sale of iPhones 7 directly from Apple warehouses unofficially for 30% of the market value. Always available and in large quantities:
1. New Apple iPhone 7 Plus 256 GB (Jet Black) (FACTORY UNLOCKED) International Version no warrants - $ 303
2. New Apple iPhone 7 Plus 256GB Factory Unlocked CDMA / GSM Smartphone - Black (Certified Refurbished) - $ 307
3. New Apple iPhone 7 PLUS (5.5-inch) A1661 128GB Unlocked Smartphone for GSM + CDMA Carriers - Rose Gold - $ 303
We work all over the world and only on an advance payment, we accept only bitcoin. Attention!!! We do not work with Russia and the CIS countries. When ordering from 10 pcs. The price is 20% of the market value. We have a priority in wholesale customers. If you do not trust us, or you do not like something, you pass by, we will not respond to stupid reports. To receive the details for payment, please write to the e-mail: apple@apple-cheap-iphone.xyz

Последние комментарии

Счетчики