Креслення прямої лінії здійснює метод LinеТо, інструкція виклику якого в загальному вигляді виглядає наступним чином:
Компонент.Canvas.LineTo (x, у)
Метод LinеТо викреслює пряму лінію від поточної позиції олівця в точку з координатами, зазначеними при виклику методу.
Початкову точку лінії можна задати, перемістивши олівець в потрібну точку графічної поверхні. зробити це можна за допомогою методу MoveTo, вказавши в якості параметрів координати нового положення олівця.
Вид лінії (колір, товщина і стиль) визначається значеннями властивостей об’єкта Реп графічної поверхні, на якій викреслюється лінія.
Досить часто результати розрахунків зручно представити у вигляді графіка. Для більшої інформативності і наочності графіки зображають на тлі координатних осей і оцифрованої сітки. У лістингу 10.2 наведено текст програми, яка на поверхню форми виводить координатні осі і оцифрований сітку (рис. 10.4).
Рис. 10.4. Форма додатки Координатна сітка
Лістинг 10.2. Осі координат і оцифрована сітка
unit grid_; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = Class (TForm) procedure FormPaint (Sender: TObject); private { Private declarations} public { Public declarations} end; var Form1: TForm1; implementation {$ R * .DFM} procedure TForm1.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: = 30; у0: = 220; // осі починаються в точці (40,250) dx: = 40; dy: = 40; // куля координатної сітки 40 пікселів dcross: = 1; // позначати лінії сітки X: 1 - кожну; // 2 - через одну; // 3 - через дві; dlx: = 0.5; // крок міток осі X dly: = 1.0; // крок міток осі Y, мітками будуть: 1, 2, 3 і т. Д. h: = 200; w: = 300; with forml.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-3); LineTo (x, yO + 3); // зарубка cross: = cross-l; if cross = 0 then // оцифровка begin TextOut (x-8, y0 + 5, FloatToStr (lx)); cross: = dcross ; end; Pen.Style:=psDot; MoveTo (x, y0-3); 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-3, у); LineTo (х0 + 3, у); // зарубка TextOut (х0-20, у, FloatToStr (1У)); // оцифровка Pen.Style:=psDot; MoveTo (х0 + 3, у); LineTo (x0 + w, у); // лінія сітки Pen.Style:=psSolid; y: = y-dy; ly: = ly + dly; until (y< y0-h); end; end; end.
Особливість наведеної програми полягає в тому, що вона дозволяє задавати крок сітки і оцифровку. Крім того, програма дає можливість оцифровувати не кожного лінію сітки осі х, а через одну, дві, три і т. д. Зроблено це для того, щоб запобігти можливі накладення зображень чисел оцифровки один на одного в разі, якщо ці числа складаються з декількох цифр.