Будь-яка картинка, креслення, схема можуть розглядатися як сукупність графічних примітивів: точок, ліній, окружностей, дуг і ін. Таким чином, для того щоб на екрані з'явилася потрібна картинка, програма повинна забезпечити креслення (виводу) графічних примітивів, що складають цю картинку.
Креслення графічних примітивів на поверхні компонента (чи форми області виводу ілюстрації) здійснюється застосуванням відповідних методів до властивості Canvas цього компонента.
Лінія
Креслення прямої лінії здійснює метод LіnеTо, інструкція виклику якого в загальному виді виглядає в такий спосіб:
Компонент.Canvas.LineTo(x,у)
Метод LіnеTо вичерчує пряму лінію від поточної позиції олівця в крапку з координатами, зазначеними при виклику методу.
Початкову крапку лінії можна задати, перемістивши олівець у потрібну точку графічної поверхні. Зробити це можна за допомогою методу MoveTo (x,y: integer), указавши як параметри координати нового положення олівця.
Вид лінії (колір, товщина і стиль) визначається значеннями властивостей об'єкта Реn графічної поверхні, на якій викреслюється лінія.
Досить часто результати розрахунків зручно представити у виді графіка. Для більшої інформативності і наочності графіки зображують на фоні координатних осей і оцифрованої сітки. У лістингу 4.2 приведений текст програми, що на поверхню форми виводить координатні осі й оцифровану сітку (мал. 4.4).
Рис. 4.4Форма додатка Координатна сітка
Лістинг 4.2 Осі координат і оцифрована сітка
unitgrid_;
Interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
Type
TForm1 = class(TForm)
procedureFormPaint(Sender: TObject);
private
{ Private declarations }
Public
{ Public declarations }
end;
Var
Form1: TForm1; implementation
{$R *.DFM}
procedureTForm1.FormPaint(Sender: TObject);
Var
x0,y0:integer; // координати початку координатних осей
dx,dy:integer; // крок координатної сітки (у пикселах)
h,w:integer; // висота і ширина області виводу координатної сітки
х,у:integer;
lx,ly:real; // мітки (оцифровка) ліній сітки по X і Y
dlx,dly:real; // крок міток (оцифровки) ліній сітки по X і Y
cross:integer; // лічильник неоцифрованих ліній сітки
dcross:integer;// кількість неоцифрованих ліній між оцифрованими
Begin
х0:=40; у0:=220; // осі починаються в точці (40,250)
dly:=1.0; // крок міток осі Y, мітками будуть: 1, 2, 4 і т.д.
h:=200; w:=400;
withforml.Canvas do begin
cross:=dcross;
MoveTo(x0,v0); LineTo(x0,y0-h); // вісь X
MoveTo(x0,y0); LineTo(x0+w, y0); // вісь Y
// зарубки, сітка й оцифровка по осі X
x:=x0+dx;
lx:=dlx;
Repeat
MoveTo(x,y0-4);LineTo(x,y0+4); // зарубка
cross:=cross-l;
if cross = 0 then// оцифровка
Begin
TextOut(x-8,y0+5,FloatToStr(lx));
cross:=dcross ; end;
Pen.Style:=psDot;
MoveTo(x,y0-4);LineTo(x,y0-h); // лінія сітки
Pen.Style:=psSolid;
lx:=lx+dlx;
x:=x+dx;
until (x>x0+w);
// зарубки, сітка й оцифровка по осі Y
y:=y0-dy;
ly:=dly;
Repeat
MoveTo(х0-4,у);LineTo(х0+4,у); // зарубка
TextOut(х0-20,у,FloatToStr(1у)); // оцифровка
Pen.Style:=psDot;
MoveTo(х0+4,у); LineTo(x0+w,у); // лінія сітки
Pen.Style:=psSolid;
y:=y-dy;
ly:=ly+dly; until (y<y0-h);
end;
end;
End.
Особливість приведеної програми полягає в тім, що вона дозволяє задавати крок сітки й оцифровку. Крім того, програма дає можливість оцифровувать не кожну лінію сітки осі х, а через одну, дві, три і т.д. Зроблено це для того, щоб запобігти можливі накладення зображень чисел оцифровки один на одного у випадку, якщо ці числа складаються з декількох цифр.
Ламана лінія
Метод polyline вичерчує ламану лінію. Як параметр метод одержує масив типу TPoint. Кожен елемент масиву являє собою запис, полючи х и у якої містять координати точки перегину ламаної. Метод Polyline вичерчує ламану лінію, послідовно з'єднуючи прямими точки, координати яких знаходяться в масиві: першу з другий, другу з третьої, третю з четвертої і т.д.
Як приклад використання методу Polyline у лістингу 4.3 приведена процедура, що виводить графік зміни деякої величини. Передбачається, що вихідні дані знаходяться в доступному процедурі масиві Data (тип Integer).