Класс TCanvas.

 Класс TCanvas называют канвой. Канва не является компонентом, она входит в качестве свойства в те из них, которые умеют нарисовать себя. Канва включает в себя свойства:    

         Font (шрифт), Pen(перо), Brush(кисть), Pixel(точка), PenPos(текущие координаты).

 Канва содержит в себя и некоторые методы: Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4:Integer) – чертит дугу эллипса в охватывающем прямоугольнике (X1, Y1) – (X2, Y2)

        Ellipse (X1, Y1, X2, Y2:Integer) эллипс в прямоугольнике (X1, Y1) – (X2, Y2)

        LineTo (X, Y: Integer) чертит линию от текущей точки пера до точки (X, Y)

        MoveTo (X, Y: Integer) перемещает перо без рисования в точку (X, Y)

        Rectangle (X1, Y1, X2, Y2:Integer) вычерчивает прямоугольник (X1, Y1) – (X2, Y2)

        FlooFill (X, Y: Integer; Color:TColor; FillStyle:TFillStyle) заливка канвы текущей кистью.

 

Задача 1. Используя в качестве примера приложение «Канва» из папки «Задание», составить программу движения кораблика.

           Код программы:

 

procedure Titanik(x,y: integer;  color: TColor);    // координаты базовой точки// цвет корабля

const   dx = 5;   dy = 5;

var       buf: TColor;

begin

  with form1.canvas do                                                    // Вместе с объектом «Канва»

  begin

    buf:=pen.Color;                                                           // сохраним текущий цвет

    pen.Color:=color;                                                        // установим нужный цвет

    MoveTo(x,y);                                                              // рисуем ...     корпус

    LineTo(x,y-2*dy);                LineTo(x+10*dx,y-2*dy);       LineTo(x+11*dx,y-3*dy);

    LineTo(x+17*dx,y-3*dy);    LineTo(x+14*dx,y);                LineTo(x,y);

    MoveTo(x+3*dx,y-2*dy);                                          // надстройка

    LineTo(x+4*dx,y-3*dy);         LineTo(x+4*dx,y-4*dy);      LineTo(x+13*dx,y-4*dy); 

   

    LineTo(x+13*dx,y-3*dy);       MoveTo(x+5*dx,y-3*dy);     LineTo(x+9*dx,y-3*dy);

    Rectangle(x+8*dx,y-4*dy,x+11*dx,y-5*dy);             // капитанский мостик

    Rectangle(x+7*dx,y-4*dy,x+8*dx,y-7*dy);               // труба

    Ellipse(x+11*dx,y-2*dy,x+12*dx,y-1*dy);                // иллюминаторы

    Ellipse(x+13*dx,y-2*dy,x+14*dx,y-1*dy);

    MoveTo(x+10*dx,y-5*dy);                                          // мачта

    LineTo(x+10*dx,y-10*dy);

    MoveTo(x+17*dx,y-3*dy);                                          // оснастка

    LineTo(x+10*dx,y-10*dy);     LineTo(x,y-2*dy);

    pen.Color:=buf;                                                // восстановим старый цвет карандаша

  end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);   // обработка сигнала таймера

begin

   Titanik(x,y,form1.color);                                                 // стереть рисунок

   if x < Form1.ClientWidth

      then x := x+5

      else begin                                                                       // новый рейс

        x := 0;

        y := Random(50) + 100;                                              // случайный выход слева по у

      end;

   Titanik(x,y,clWhite);                                                        // нарисовать в новой точке

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

     x:=0;

     y:=100;

     Form1.Color:=clNavy;

     Timer1.Interval := 50;                                                   // сигнал таймера каждые 50 мСек

end;

Сайт создан в системе uCoz