Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаборатоорная 7.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
549.31 Кб
Скачать

Способ 2

Теперь воспользуемся для рисования свойствами канвы Pen и LineTo. Cвойство Pen в свою очередь также обладает рядом свойств, о чём говорилось ранее.

Процедура обработки события должна иметь вид:

 

procedure TForm1.FormPaint(Sender: TObject);

var

 X,Y: real;

 PX,PY: longint;

begin

 Color:=clWhite;

 Canvas.Pen.Color:=clRed;

 Canvas.MoveTo(0,ClientHeight div 2);

 for PX:=0 to ClientWidth do

  begin

   X := PX*4*Pi/ClientWidth;

   Y := Sin(X);

   PY := trunc(ClientHeight - (Y+1)*ClientHeight/2);

   Canvas.LineTo(PX,PY);

  end;

end;

 

В данной процедуре для вычерчивания линии красного цвета было задано следующее свойство: Canvas.Pen.Color:=clRed, если эту строчку исключить из кода программы, то линия будет чёрной.

 

При запуске приложение будет выглядеть следующим образом:

 

Пример 2. Геометрические фигуры. Типы заливок

 

В данном примере представлено приложение, демонстрирующее построение на канве различных геометрических фигур с применением к ним заливок, а также отображение текста на канве.

 

Вид приложения во время его выполнения:

 

 

Текст файла Unit1.pas

 

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs;

 

type

  TForm1 = class(TForm)

    procedure FormPaint(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

Для рисования фигур используем процедуруTForm1.FormPaint:

procedure TForm1.FormPaint(Sender: TObject);

begin

 Color:=clInfoBk; // устанавливаем цвет фона светло-жёлтым

 

Для каждой фигуры отдельно устанавливаются свойства "Кисть" и "Карандаш".

В данном фрагменте приводится метод для прорисовки многоугольника, причем количество вершин многоугольника определяется количеством точек в множестве Points

 Canvas.Brush.Style:=bsSolid;

 Canvas.Pen.Color:=clBlue;

 Canvas.Brush.Color:=clYellow;

 

 Canvas.Polygon([Point(40, 20), Point(48, 40),

 Point(70, 40), Point(52, 52),Point(60, 75),

 Point(40, 60), Point(20, 75),

 Point(28, 52), Point(10, 40),Point(32, 40)]);

 

 Canvas.Brush.Color:=clInfoBk;

 Canvas.TextOut( 90, 50,'Polygon' );

 

Аналогичным образом прорисовываются остальные фигуры:

 Canvas.Brush.Style:=bsCross;

 Canvas.Pen.Color:= clTeal;

 Canvas.Brush.Color := clRed;

 Canvas.Ellipse(10, 95, 65, 150); // эллипс

 

 Canvas.TextOut( 90, 115,'Ellipse' );

 

 Canvas.Pen.Color := clPurple;

 Canvas.MoveTo( 180, 20 );

 Canvas.LineTo( 200, 40 );

 Canvas.LineTo( 180, 60 );

 Canvas.LineTo( 240, 60 );

 Canvas.LineTo( 240, 75 );

 

 Canvas.TextOut( 260, 50,'LineTo' );

 

 Canvas.Pen.Color := clMaroon;

 Canvas.Brush.Color := clLime;

 Canvas.Brush.Style:=bsFDiagonal;

 Canvas.Rectangle(10, 170, 65, 225); // прямоугольник

 

 Canvas.TextOut( 90, 185,'Rectangle' );

 

 Canvas.Pen.Color := clTeal;

 Canvas.Brush.Color := clBtnFace;

 Canvas.Brush.Style:=bsDiagCross;

 Canvas.RoundRect(180, 95, 240, 150,20,20);

 

 Canvas.TextOut( 260, 115,'RoundRect' );

 

 Canvas.Brush.Style:=bsSolid;

 Canvas.Pen.Color:=clBlue;

 Canvas.Brush.Color:=clAqua;

 Canvas.Polygon([Point(180, 210), Point(230, 170), Point(240, 225)]);

 {многоугольник, в данном случае - треугольник}

 

 Canvas.Brush.Color:=clInfoBk;

 Canvas.TextOut( 260, 185,'Polygon' );

end;

 

end.