Листинг 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.
Особенность приведенной программы заключается в том, что она позволяет задавать шаг сетки и оцифровку. Кроме того, программа дает возможность оцифровывать не каждую линию сетки оси х, а через одну, две, три и т. д. Сделано это для того, чтобы предотвратить возможные наложения изображений чисел оцифровки друг на друга в случае, если эти числа состоят из нескольких цифр.
Дата добавления: 2015-09-18 | Просмотры: 561 | Нарушение авторских прав
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
|