Энциклопедия Turbo Pascal. Главы 9-11
Страница 17. Базовые графические элементы


Базовые графические элементы

     Графический инструментарий представляет процедуры реализации
базовых графических элементов, которые на первый взгляд дублируют
аналогичные процедуры,  имеющиеся в Турбо Паскале. Однако, это не
так.  Процедуры инструментария могут работать в планетной коорди-
натной системе, тогда как соответствующие процедуры Турбо Паскаля
не могут.  Процедуры реализации базовых графических процедур опи-
саны в таблице 10-1.
                                          Таблица 10-1
       Процедуры реализации базовых графических элементов

    Имя                          Функция

DrawPoint             Нарисовать точку в заданном месте
DrawLine              Нарисовать линию в заданном месте
DrawSguare            Нарисовать квадрат в заданном месте
DrawCircle            Нарисовать круг в заданном месте
DrawCircleSegment     Нарисовать круг в заданном месте
DrawCircleDirect      Нарисовать круг, используя абсолютные
                      координаты
SetAspect             Установить коэффициент взгляда для
                      процедур реализации круга
GetAspect             Возврат к текущему коэффициенту взгляда


     Следующая простая программа выбирает планету и окно и рисует
круги, квадраты и линию. Результаты показаны на рис.10-1.

    program simple_graphics;

    {Si typedef.sys}
    {Si graphix.sys}
    {Si kernel.sys}

    var
      radius: real;
      i:integer;

    begin
      InitGraphic;
      DefineWorld(1, 0, 0, 1000, 1000);
      SelectWorld(1);
      SelectWindom(1);
      DrawBorder; {установить границу вокруг окна }

      SetAspect(1);

      radius: = 0.05;

      for i: = 1 to 10 do
      begin
       DrawCircle(500,500,radius);
       radius: = radius + 0.2;
      end;
      repeat until KeyPressed;
      ReadLn;
      DrawSguare(100, 100, 900, 900, false);
      DrawSguare(400, 400, 600, 600, false);
      repeat until KeyPressed;
      ReadLn;
      DrawLine(0, 0, 1000, 1000);
      repeat until KeyPressed;
      LeaveGraphic;
    end.

     Процедура SetAspect используется для  установки коэффициента
взгляда,  который определяет способ рисования круга. Любое значе-
ние, отличное от 1, будет порождать элипс вместо круга. Процедура
DrawBorder помещает границу вокруг активного окна.

      --------------------------------------------------¬
      ¦   --------------------------------------------¬ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   ¦                                           ¦ ¦
      ¦   L-------------------------------------------- ¦
      L--------------------------------------------------
    Рис.10-1. Круги, квадраты и линии в области 1000х1000

     Чтобы понять влияние планетных координат,  изменим предложе-
ние DefineWold и запустим программу снова.  Окончательное отобра-
жение будет выглядеть,  как показано на рис.10-2. Отметим, что не
все круги влезли в область 2000х2000. Когда что-нибудь не влезает
в  область,  процедуры  инструментария автоматически "отстригают"
его по краю.

    ---------------------------------------------------¬
    ¦  ---------------------¬                          ¦
    ¦  ¦                    ¦                          ¦
    ¦  ¦                    ¦                          ¦
    ¦  ¦                    ¦                          ¦
    ¦  ¦                    ¦                          ¦
    ¦  ¦                    ¦                          ¦
    ¦  ¦                    ¦                          ¦
    ¦  L---------------------                          ¦
    ¦                                                  ¦
    ¦                                                  ¦
    ¦                                                  ¦
    ¦                                                  ¦
    ¦                                                  ¦
    ¦                                                  ¦
    ¦                                                  ¦
    ¦                                                  ¦
    L---------------------------------------------------
    Рис.10-2. Круги, квадраты и линия в области 2000х2000

 
Следующая статья »