Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_ЗАД_ООПТС_15_06_2012.doc
Скачиваний:
7
Добавлен:
24.09.2019
Размер:
193.54 Кб
Скачать

Interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;

type

TForm1 = class(TForm)

PaintBox1: TPaintBox;

procedure PaintBox1Paint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1 : TForm1;

implementation

{$R *.DFM}

procedure TForm1.PaintBox1Paint(Sender: TObject);

procedure sector(clr: TColor; angle1, angle2 : real;

msg: string);

var x1, x2, y1, y2 : integer;

begin

PaintBox1.Canvas.Brush.Color := clr;

x1 := trunc(cos(angle1) * PaintBox1.Width/2 + PaintBox1.Width/2);

y1 := PaintBox1.Height - trunc(sin(angle1) * PaintBox1.Height/2 +

PaintBox1.Height/2);

х2 := trunc(cos(angle2) * PaintBox1.Width/2 + PaintBox1.Width/2);

у2 := PaintBox1.Height - trunc(sin(angle2) * PaintBox1.Height/2

+ PaintBox1.Height/2);

PainBox1.Canvas.Pie(0, 0, PaintBox1.Width, PaintBox1.Height, x1,

y1, x2, y2);

PaintBox1.Font.Name := ‘Arial’;

PaintBox1.Font.Size := 8;

PaintBox1.Font.Color := clBlack;

PaintBox1.Font.Style := [fsBold];

PaintBox1.Canvas.TextOut(trunc((x1 + x2)/2)- 20, trunc((y1+y2)/2),

msg);

end;

begin

sector(clLime, 0, pi/3, ‘16,5%’);

sector(clWhite, pi/3, 5 * pi/6, ‘25%’ );

sector(clSkyBlue, 5 * pi/6, 7 * pi/5, ‘28,4%’);

sector(clYellow, 7 * pi/5, 2 * pi, ‘30%’ );

end;

end.

Для рисования сектора круга в обработчике TForm1.PaintBox1Paint определена про­цедура sector:

procedure sector(clr : TColor; angle1, angle2 : real; msg : string);

имеющая следующие параметры:

clr - цвет, которым закрашен сектор;

angle1 - начальный угол, т.е. угол между осью ОХ и правой стороной секто­ра

(задается в радианах);

angle2 - конечный угол, т.е. угол между осью ОХ и левой стороной сектора

(задается в радианах);

msg - текст, используемый для подписи сектора.

  1. Выполним команду главного меню File|Save All и сохраним проект под именем Project3, модуль под именем Unit3 в папке D:\MyProject\Diagram. Запустим про­ект на выполнение. Для сокращения записи при обращении к свойствам и полям объектов можно использовать оператор присоединения with. В качестве примера приведем код обра­ботчика

TForm1.PaintBox1Paint с использованием оператора with:

procedure TForm1.PaintBox1Paint(Sender: TObject);

procedure sector(clr : TColor; angle1, angle2 : real;

msg : string);

var x1, x2, у1, у2 : integer;

begin

with PaintBox1,Canvas do

begin

Brush.Color := clr;

x1 := trunc(cos(angle1) * Width/2 + Width/2);

y1 := Height - trunc(sin(angle1) * Height/2 + Height/2);

x2 := trunc(cos(angle2)* Width/2 + Width/2);

y2 := Height - trunc(sin(angle2)* Height/2 + Height/2);

Pie(0, 0, Width, Height, x1, y1, x2, y2);

Font.Name := ‘Arial’;

Font.Size := 8;

Font.Color := clBlack;

Font.Style := [fsBold];

TextOut(trunc((xl+x2)/2) - 20, trunc((y1 + y2) / 2), msg);

end;

end;

begin

sector(clLime, 0 , pi/3, ‘16,5%’);

sector(clWhite, pi/3, 5 * pi/6, ‘25%’ );

sector(clSkyBlue, 5 * pi/6, 7 * pi/5, ‘28,4%’);

sector(clYellow, 7 * pi/5, 2 * pi, ‘30%’ );

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]