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; // высота и ширина области вывода координатной сетки
x,y:integer;
lx,ly:real; // метки (оцифровка) линий сетки по X Y
dlx,dly:real; // шаг меток (оцифровки) линий сетки по X и Y
cross:integer; // счетчик не оцифрованных линий сетки
dcross:integer;// кол-во не оцифров. линий между оцифрованными
begin
x0:=30; y0:=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 form1.Canvas do
begin
cross:=dcross;
MoveTo(x0,y0); 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,y0+3); // засечка
cross:=cross-1;
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(x0-3,y);LineTo(x0+3,y); // засечка
TextOut(x0-20,y,FloatToStr(ly)); // оцифровка
Pen.Style:=psDot;
MoveTo(x0+3,y); LineTo(x0+w,y); // линия сетки
Pen.Style:=psSolid;
y:=y-dy;
ly:=ly+dly;
until (
end;
end.
2008-02-27 • Просмотров [ 7336 ]
Ошибка вот в этой строке: "until (y end;"