Метод polyline викреслює ламану лінію. Як параметр метод отримує масив типу TPoint. кожен елемент масиву представляє собою запис, поля х і у якій утримують координати точки перегину ламаної. Метод Polyline викреслює ламану лінію, послідовно поєднуючи прямими точки, координати яких знаходяться в масиві: першу з другою, другу з третьою, третю з четвертою і т. д.
Як приклад використання методу Polyline в лістингу 10.3 приведена процедура, яка виводить графік зміни деякої величини. Передбачається, що вихідні дані знаходяться в доступному процедурі масиві Data (тип Integer).
Лістинг 10.3. Графік функції (використання методу Polyline)
procedure TForml.Button1Click (Sender: TObject); var gr: array [1..50] of TPoint; // графік - ламана лінія x0, y0: integer; // координати точки початку координат dx, dy: integer; // крок координатної сітки по осях X і Y i: integer; begin х0 : = 10; у0: = 200; dx : = 5 ; dy: = 5; // заповнимо масив gr for i: = l to 50 do begin gr [i] .x : = X0 + (i-l) * dx; gr [i] .y : = Y0 - Data [i] * dy; end; // будуємо графік with forml.Canvas do begin MoveTo (x0, y0); LineTo (x0,10); // вісь Y MoveTo (x0, y0); LineTo (200, y0); // вісь X Polyline (gr); // графік end; end;
Метод Polyline можна використовувати для креслення замкнутих контурів. Для цього треба, щоб перший і останній елементи масиву містили координати однієї і тієї ж точки. В якості приклад використання методу Polybine для креслення замкнутого контуру в лістингу 10.4 приведена програма, яка на поверхні діалогового вікна, в точці натискання кнопки миші, викреслює контур п’ятикутної зірки (рис. 10.5). Колір, яким викреслюється зірка, залежить від того, яка з кнопок миші була натиснута. Процедура обробки натискання кнопки миші (подія MouseDown) викликає процедуру малювання зірки starLine і передає їй як параметр координати точки, в якій була натиснута кнопка. Зірку викреслює процедура starLine, яка в якості параметрів отримує координати центру зірки і полотно, на якому зірка повинна бути виведена. Спочатку обчислюються координати кінців і западин зірки, які записуються в масив р. Потім цей масив передається в якості параметра методу Polyline. При обчисленні координат променів і западин зірки використовуються функції sin і cos. Так як аргумент цих функцій має бути виражений в радіанах, то значення кута в градусах домножается на величину pi / 18о, де pi – це стандартна іменована константа рівна числу л.
Лістинг 10.4. Креслення замкнутого контуру (зірки) в точці натискання кнопки миші
unit Stars_; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class (TForm) procedure FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations} public { Public declarations} end; var Forml: TForml; implementation f $ R * .dfm} // викреслює зірку procedure StarLine (x0, y0, r: integer; Canvas: TCanvas); // x0, y0 - координати центру зірки // r - радіус заїзди var р : Array [1 .. 11] of TPoint; // масив координат променів і западин a: integer; // кут між віссю ОХ і прямий, що з'єднує // центр зірки і кінець променя або западину i: integer; begin а : = 18; // будуємо від правого гір. променя for i: = l to 10 do begin if (i mod 2 = 0) then begin // западина p [i] .x : = X0 + Round (r / 2 * cos (a * pi / 180)); p [i] .y: = y0-Round (r / 2 * sin (a * pi / 180)); end else begin // промінь [i] .x: = x0 + Round (r * cos (a * pi / 180)); [i] .y: = y0-Round (r * sin (a * pi / 180)); end; a : = A + 36; end; p [ll] .X : = P [l] .X; // щоб замкнути контур зірки Canvas. Polyline (р); // накреслити зірку end; // натискання кнопки миші procedure TForm1. FormMouseDown {Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft // натиснута ліва кнопка? then Form1. Canvas. Pen. Color: = clRed else Form1. Canvas. Pen. Color: = clGreen; StarLine (x, y, 30, Forml. Canvas); end; end.
Ріс.10.5. Зірка
Примітка
Зверніть увагу, що розмір масиву р на одиницю більше, ніж кількість кінців і западин зірки, і що значення першого і останнього елементів масиву збігаються.