Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 630

•  TDictionary Custom Sort  6 638

•  Fast Watermark Sources  6 413

•  3D Designer  9 354

•  Sik Screen Capture  6 744

•  Patch Maker  7 131

•  Айболит (remote control)  7 136

•  ListBox Drag & Drop  5 998

•  Доска для игры Реверси  97 582

•  Графические эффекты  7 329

•  Рисование по маске  6 615

•  Перетаскивание изображений  5 487

•  Canvas Drawing  5 864

•  Рисование Луны  5 589

•  Поворот изображения  5 096

•  Рисование стержней  3 666

•  Paint on Shape  2 895

•  Генератор кроссвордов  3 795

•  Головоломка Paletto  3 047

•  Теорема Монжа об окружностях  3 858

•  Пазл Numbrix  2 539

•  Заборы и коммивояжеры  3 251

•  Игра HIP  2 221

•  Игра Go (Го)  2 153

•  Симулятор лифта  2 532

•  Программа укладки плитки  2 173

•  Генератор лабиринта  2 670

•  Проверка числового ввода  2 322

•  HEX View  2 655

•  Физический маятник  2 288

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Координатная сетка



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 (y < y0 - h);
  end;
end;

end.