Метод Polyline вычерчивает ломаную линию. В качестве параметра метод получает массив типа TPoint. Каждый элемент массива представляет собой запись, поля (х,у) которой содержат координаты точки перегиба ломаной. Метод Polyline вычерчивает ломаную линию, последовательно соединяя прямыми точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой и т. д.

В качестве примера использования метода Polyline в листинге 10.3 приведена процедура, которая выводит график изменения некоторой величины. Предполагается, что исходные данные находятся в доступном процедуре массиве Data (тип integer).

Листинг 10.3. Построение графика с использованием метода Polyline

procedure TForml.ButtonlClick(Sender: TObject); var gr: array _'. . .:: С ] of TPoint; // трафик - ломаная линия xO,yO: integer; // координаты точки начала координат dx,dy: integer; // шаг координатной сетки по осям X и Y

i: integer;
begin
xO := 10; yO := 200; dx :=5; dy := 5; // заполним массив gr for i:=l to 50 do begin
gr[i].x := xO + (i-1)*dx;
gr[i].y := yO - Data[i]*dy;
end;

// строим график with forml.Canvas do begin MoveTo(x0,y0); LineTo(xO,10); // ось Y MoveTo(x0,yo); LineTo(200,yO); // ось X Polyline(gr); // график

end;
end;

Метод Polyline можно использовать для вычерчивания замкнутых контуров. Для этого надо, чтобы первый и последний элементы массива содержали координаты одной и той же точки. В качестве примера использования метода Polyline для вычерчивания замкнутого контура в листинге 10.4 приведена программа, которая на поверхности диалогового окна, в точке нажатия левой кнопки мыши, вычерчивает контур пятиконечной звезды (рис. 10.5).

Листинг 10.4

unit Stars_; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForml = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public

{ Public declarations } end;

var Forml: TForml; implementation

{$R *.dfm} procedure StarLine(xO,yO,r: integer; Canvas: TCanvas); // xO,yO - координаты центра звезды // г - радиус звезды

var р : array[1..11] of ТPoint; // массив координат лучей и впадин a: integer; // угол между осью ОХ и прямой, соединяющей // центр звезды и конец луча или впадину

i: integer; begin а := 18; // строим от правого гор. луча for i:=l to 10 do begin if (i mod 2=0) then begin // впадина

p[i].x := xO+Round(r/2*cos(a*2*pi/360));

p[i].y:=yO^Round(r/2*sin(a*2*pi/360)); end else begin // луч

p[i].x:=xO+Round(r*cos(a*2*pi/360));
p[i].y:=yO-Round(r*sin(a*2*pi/360));
end;
a := a+36;
end;
p[11].X := p[l].X; // чтобы замкнуть контур звезды р[11] .Y := р[1] .Y;

Canvas.Polyline(p); // начертить звезду

end;

// нажатие кнопки мыши

procedure TForml.FormMouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
if Button = mbLeft // нажата левая кнопка? then Forml.Canvas.Pen.Color := clRed else Forml.Canvas.Pen.Color := clGreen;
StarLine(x, y, 30,Forml.Canvas);
end;
end.

Звезду вычерчивает процедура starLine, которая в качестве параметров получает координаты центра звезды и холст, на котором звезда должна быть выведена. Сначала вычисляются координаты концов и впадин звезды, которые записываются в массив р. Затем этот массив передается в качестве параметра методу Polyline.

( Примечание J

Обратите внимание, что размер массива р на единицу больше, чем количество концов и впадин звезды, и что значения первого и последнего элементов массива совпадают.

Линия || Оглавление || Окружность и эллипс


Delphi 6. Программирование на Object Pascal



Новости за месяц

  • Ноябрь
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс