Лінія

Креслення прямої лінії здійснює метод 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.

Особливість наведеної програми полягає в тому, що вона дозволяє задавати крок сітки і оцифровку. Крім того, програма дає можливість оцифровувати не кожного лінію сітки осі х, а через одну, дві, три і т. д. Зроблено це для того, щоб запобігти можливі накладення зображень чисел оцифровки один на одного в разі, якщо ці числа складаються з декількох цифр.