Показать сообщение отдельно
  #10  
Старый 06.06.2014, 21:39
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А может такое подойдёт
Код:
procedure TForm1.Button1Click(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 (y < y0 - h);
end;

Canvas.Brush.Style:= bsCross;
  Canvas.Brush.Color:= clRed;
  Canvas.Pen.Color:= clRed;
  Canvas.Ellipse(100, 100, 300, 200);
end;
Ответить с цитированием