Мир программирования

 


Найти: на:


Меню
Партнеры
Счетчики
Реклама

ГЛАВА 12. МОДУЛЬ GRAPH


Предыдущая страница     |     Следующая страница
Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

     Модуль Graph реализует  полную  библиотеку  из  более  чем  50 графических   программ,   начиная  от  высокоуровневых,  таких  как SetViewPort,      Circle,      Bar3D      или      DrawPoly      до бит-ориентированных, таких  как GetImage и PutImage. Поддерживаются несколько типов линий и  стилей  заполнения,  существует  несколько типов шрифтов,    которые    можно   увеличивать,   выравнивать   и ориентировать вертикально или горизонтально.

     Для того  чтобы  компилировать  программу,  которая использует модуль Graph, Вам требуется Ваш исходный код, компилятор и доступ к стандартным  модулям  в  TURBO.TPL и модулю Graph в GRAPH.TPU.  Для того чтобы выполнить программу,  которая использует  модуль  Graph, Вам необходим один или более графических драйверов (.BGI файлы, см. ниже). Кроме того, если Ваша программа использует штриховые шрифты, Вам потребуется один или более файлов шрифтов (.CHR).

   

Драйверы.

      Графические драйверы   поддерживают   следующие    графические адаптеры (и полностью совместимые с ними):

           - CGA

          - MCGA

          - EGA

          - VGA

          - Hercules

          - AT&T 400 строк

          - 3270 PC

          - IBM-8514

      Каждый драйвер содержит код и данные,  хранящиеся в  отдельном файле. Во   время   выполнения,   процедура   InitGraph  определяет графическое устройство,  загружает и инициализирует соответствующий графический драйвер,   переводит  систему  в  графический  режим  и возвращает управление вызывающей  программе.  Процедура  CloseGraph выгружает   драйвер   из   памяти   и   восстанавливает  предыдущий видеорежим.  Вы можете переключиться между графическим и  текстовым режимами используя RestoreCrtMode и SetGraphMode.  Для того,  чтобы загрузить Ваш собственный драйвер или выключить  его  в  .EXE,  см. RegisterBGIDriver в  Справочном  руководстве  по библиотеке.

     Graph поддерживает  конфигурацию  с  двумя  мониторами.  Когда Graph инициализируется  вызовом InitGraph,  соответствующий монитор будет выбран для запрошенного графического драйвера и режима. Когда графическая программа   завершается,  предыдущий  видеорежим  будет восстановлен. Если в конфигурации с двумя мониторами  будет  вызван InitGraph с   режимом  автообнаружения,  Graph  выберет  монитор  и графический адаптер на  котором  будет  поддерживаться  графический вывод с более высоким качеством.

    CGA.BGI         Драйвер для IBM CGA, MCGA

   EGAVGA.BGI      Драйвер для IBM EGA, VGA

   HERC.BGI        Драйвер для монохромного Hercules

   ATT.BGI         Драйвер для AT&T 6300 (400 строк)

   PC3270.BGI      Драйвер для IBM 3270 PC

   IBM8514.BGI     Драйвер для IBM 8514

[начало] [оглавление]

    

Поддержка IBM 8514.

      Turbo Pascal   поддерживает   графический  адаптер  IBM  8514, который имеет высокое разрешение 1024х768 и палитру цветов  256  из списка 256K цветов. Имя файла драйвера - IBM8514.BGI.

     Графический адаптер IBM 8514 не может быть правильно распознан автоматически (он    будет   распознаваться   как   адаптер   VGA). Следовательно, для использования IBM 8514,  переменной  GraphDriver должно  быть  присвоено  значение  IBM8514 (оно определено в модуле Graph) при вызове InitGraph.  DetectGraph или DETECT с InitGraph не должны использоваться   с  IBM  8514  (если  только  Вы  не  хотите эмулировать режим VGA).

     Адаптер IBM  8514  поддерживает  режимы  IBM8514Lo (640x480) и IBM8514Hi (1024x768).  Обе эти константы определены в модуле Graph.

     IBM 8514  использует три 6-ти битовые значения для определения цветов. Определены 6-битовые Red (красный),  Green (зеленый) и Blue (синий) компоненты для каждого определенного цвета. Для определения цвета в библиотеку BGI добавлена новая программа:

  procedure SetRGBPalette(ColorNum, Red, Green, Blue: Word);

     Аргумент ColorNum определяет номер цвета в палитре.

     ColorNum задается  в  диапазоне 0-255 (десятичные).  Аргументы Red,  Green,  Blue определяют значение цвета для элемента  палитры. Для определения палитры используются 6 старших битов младшего байта каждого из этих параметров.

     Другие программы   манипуляции   с   палитрой  из  графической библиотеки не могут использоваться с драйвером IBM 8514  (такие как SetAllPalette, SetPalette, GetPalette).

     Для совместимости  с  другими  графическими  адаптерами   IBM, модуль  Graph  определяет  первые  16  значений  палитры  IBM 8514, соответствующие   цветам   EGA/VGA.   Эти   значения   могут   быть использованы как  они определены или изменены,  используя программу SetRGBPalette.

     Программа FloodFill  не работает на адаптере IBM 8514.

     Эти же ограничения действуют при использовании  VGA  в  режиме 256 цветов.

[начало] [оглавление]

    

Координатная система.

      Верхний левый угол графического экрана  определен  как  (0,0). Значение Х или колонки увеличиваются направо. Значение Y или строки увеличиваются вниз.  Так в режиме 320x200 на адаптере CGA  экранные координаты  каждого  из четырех углов и точка в центре экрана будут представлены:

               Рис. 12.1. Экран с координатами (X,Y).

 

                 (0,0)                   (319,0)

                    ┌───────────────────────┐

                    │                       │

                    │       (159,99)        │

                    │           .           │

                    │                       │

                    │                       │

                    │                       │

                    └───────────────────────┘

                  (0,199)                  (319,199)

[начало] [оглавление]

  

Текущий указатель.

      Многие графические  системы  поддерживают   понятие   текущего указателя  (CP  -  Current  Pointer).  CP подобен понятию курсора в текстовом режиме, но в отличие от курсора CP не виден.

          Write('ABC');

      В текстовом режиме оператор  Write  будет  помещать  курсор  в колонку  непосредственно после символа C.  Если C помещен в колонку 80,  то курсор передвинется в первую колонку следующей строки. Если C  помещен  в  колонку 80 25-ой строки,  то весь экран сдвинется на одну строку вверх и курсор будет в первой колонке 25 строки.

         MoveTo(0, 0);

         LineTo(20, 20);

     В графическом  режиме  оператор  LineTo  поместит  CP  в точку (20,20). Выведенная линия  будет  отсечена  в  текущем  окне,  если отсечение включено. Заметим, что CP никогда не отсекается.

     Команда MoveTo эквивалентна GotoXY.  Она  используется  только для  перемещения  CP.  Следующие команды перемещают CP:  InitGraph, MoveTo, MoveRel,   LineTo,    LineRel,    OutText,    SetGraphMode, GraphDefaults, ClearDevice, SetViewPort, ClearViewPort.

     Примечание: последние 5 команд перемещают CP в (0,0).

[начало] [оглавление]

  

Текст.

      Побитовый шрифт  с  матрицей 8х8 и несколько штриховых шрифтов определены  для  вывода  текста  в   графическом   режиме.   Символ побитового шрифта   определен   в  матрице  8х8  пикселов  (точек). Штриховый шрифт  определен   серией   отрезков,   которые   говорят графической системе как рисовать шрифт.

     Удобство использованоя штрихового шрифта проявляется, когда Вы начинаете  рисовать  большие  символы.  Поскольку  штриховый  шрифт определен отрезками, он остается хорошего разрешения и качества при увеличении.

     Когда побитовый шрифт  увеличивается,  матрица  умножается  на коэффициент    масштабирования,    и    как    только   коэффициент масштабирования становится большим,  разрешения символов становится грубым. Для небольших символов побитовый шрифт будет эффективен, но для большого текста Вы захотите использовать штриховый шрифт.

     Выравнивание графического    текста   управляется   процедурой SetTextJustify. Масштабирование   и   выбор   шрифта   производится процедурой SetTextStyle.   Графический   текст   выводится  вызовом процедуры OutText или OutTextXY.  Запрос текущих  установок  текста производится  процедурой GetTextSettings.  Размер штрихового шрифта может быть определен процедурой SetUserCharSize.

     Каждый штриховой   шрифт   хранится   в   отдельном   файле  с расширением .CHR.  Файлы  шрифтов  могут  быть  загружены  с  диска автоматически модулем  Graph во время выполнения (как описано), или они могут быть включены в пользовательскую программу  или загружены ей и "зарегистрированы" модулем Graph.

     Специальная программа BINOBJ.EXE  обеспечивает  преобразование файла шрифтов   (или   любого   двоичного   файла  данных,  который соответствует ему) в файл .OBJ, который может быть включен в модуль или программу,  используя директиву компилятора {$L}. Это позволяет программе иметь все файлы шрифтов, встроенные в .EXE файл. (Читайте комментарий в начале программы GRLINK.PAS на дистрибутивном диске).

[начало] [оглавление]

  

Фигуры и стили.

 

     Существует большое число программ для рисования  и  заполнения фигур,   включая   точки,   линии,   окружности,   дуги,   эллипсы, прямоугольники, многоугольники,  полосы,  3-х   мерные   полосы   и сектора.  Использование  SetLineStyle  позволяет управлять толщиной линий и типом: сплошная, точками или тип, определенный Вами.

     Использование SetFillStyle   и   SetFillPartern,   FillPoly  и FloodPoly позволяет заполнять многоугольник штриховкой  или  другим стилем.

[начало] [оглавление]

Окна и битовые образы.

      Процедура SetViewPort заставляет все выводные команды работать относительно прямоугольной  области  экрана (окна или поля вывода). Точки,  линии,  фигуры  -  весь  графический  вывод  -  зависит  от определения  окна  (его  координат) до тех пор,  пока окно не будет изменено.  Другие программы  обеспечивают  очистку  окна  и  чтение текущего определения окна. Если отсечение активно, весь  графический вывод отсекается по границам текущего окна. Заметим, что CP никогда не отсекается.

     GetPixel и PutPixel обеспечивают чтение пикселов.  GetImage  и PutImage  могут  быть использованы для сохранения и вывода на экран прямоугольной области экрана. Они обеспечивают полный набор битовых операции (копирование, xor, or, and, not).

[начало] [оглавление]

  

Страницы и цвет.

      Существует ряд других программ,  включая поддержку  нескольких графических  страниц  (только  для  EGA,  VGA,  Hercules;  особенно полезны для мультипликации), палитры, цвета и т.п.

   

Обработка ошибок.

      Внутренние ошибки   в   модуле   Graph  возвращаются  функцией GraphResult.   GraphResult   возвращает   код   ошибки    последней графической операции. Коды ошибок определены в таблице 12.2.

     Следующие программы устанавливают GraphResult:

        Bar                  ImageSize              SetFillPattern

       Bar3D                InitGraph              SetFillStyle

       ClearViewPort        InstallUserDriver      SetGraphBufSize

       CloseGraph           InstallUserFont        SetGraphMode

       DelectGraph          PieSlice               SetLineStyle

       DrawPoly             RegisterBGIdriver      SetPalette

       FillPoly             RegisterBGIfont        SetTextJustify

       FloodFill            SetAllPalette          SetTextStyle

       GetGraphMode

      Заметим, что GraphResult  устанавливается  в  ноль  после  его вызова. Следовательно,   программист   должен   запомнить  значение GraphResult во   временной   переменной,    а    затем    проверять его.

[начало] [оглавление]

    

Начало работы.

      Пример простой программы:

      program GraphText;

     uses

       Graph;

     var

       GraphDriver,

       GraphMode,

       ErrorCode : Integer;

     begin

       GraphDriver :=Detect;

       InitGraph(GraphDriver, GraphMode,'C:\DRIVERS');

       ErrorCode :=GraphResult;

       if ErrorCode <> grOK then     {ошибка  }

       begin

         Writeln('Graphics error: ', GraphErrorMsg(ErrorCode));

         Writeln('Program aborted...');

         Halt(1);

       end;

       Rectangle(0, 0, GetMaxX, GetMaxY); {рисовать прямоугольник  на весь экран}

       SetTextJustify(CenterText, CenterText);  {центрировать текст}

       SetTextStyle(DefaultFint, Horez Dir 3);

       OutTextXY(GetMaxX  div  2,  GetMaxY  div  2,

                 'Borland Graphics interface (BGI)');

       Readln;

       CloseGraph;

     end.  {GraphTest}

      Программа начинается с вызова InitGraph, который автоматически определяет  аппаратуру  и  загружает  соответствующий   графический драйвер (из справочника С:\DRIVERS). Если графическое устройство не распознано или во время инициализации  произошла  ошибка,  выдается сообщение об   ошибке  и  программа  завершается.  Иначе,  чертится прямоугольник по краю экрана и в центре экрана выводится текст.

     Примечание: Адаптеры  AT&T  400  и  IBM 8514 нельзя распознать автоматически. Для использования этих драйверов Вам  нужно отменить автообнаружение  и  передать  в InitGraph код драйвера и правильный код графического режима. Например, чтобы использовать драйвер AT&T, замените строки 9 и 10 в предыдущем примере на:

         GraphDriver := ATT400;

        GraphMode   := ATT400Hi;

        InitGraph(GraphDriver, GraphMode, 'C:\DRIVERS');

      Это указывает  системе загрузить драйвер AT&T 400 и установить графический режим 640x400 точек.

     Приведенный ниже пример демонстрирует возможность переключения между графическим и текстовым режимами:

    program GraphText;

   uses

     Graph;

   var

     GraphDriver,

     GraphMode,

     ErrorCode : Integer;

   begin

     GraphDriver :=Detect;

     InitGraph(GraphDriver, GraphMode, 'C:\DRIVERS');

     ErrorCode :=GraphResult;

     if ErrorCode <> grOK then     {ошибка}

     begin

        Writeln(Graphics error: ', GraphErrorMsg(ErrorCode));

        Writeln('Program aborted...');

        Halt(1);

      end;

      OutText('InGraphiesMode. Press<Return>');

      Readln;

      RestoreCRTMode;

      Writeln('Now in text mode. Press<Return>');

      Readln;

      SetGraphMode(GraphMode);

      OutText('Back in Graphics mode. Press<Return>');

      Readln;

      CloseGraph;

    end. {GraphTest}

      Заметим, что вызов SetGraphMode устанавливает  все графические параметры (палитру,  текущий указатель, цвета и т.п.) в значение по умолчанию.

     Вызов CloseGraph  вoсстанавливает  видеорежим,   который   был установлен до  вызова InitGraph и освобождает память,  используемую графическим драйвером.

[начало] [оглавление]

    

Пользовательские программы управления кучей.

      Модуль Graph   использует   две  программы  управления  кучей: GraphGetMem и GraphFreeMem.  GraphGetMem  распределяет  память  для драйверов графического устройства, шрифтов и сканирующего буфера.

     GraphFreeMem освобождает   память   распределенную   драйверу. Стандартные программы имеют вид:

      procedure GraphGetMem (var P: Pointer; Size: Word);

     procedure GraphFreeMem (var P: Pointer; Size: Word);

      Модуль Graph  определяет  два  указателя  для  ссылки  на  эти стандартные программы. Эти указатели определены так:

  var

   GraphGetMemPtr : Pointer; {указатель на программу распределения  памяти}

   GraphFreeMemPtr : Pointer; {указатель на программу освобождения  памяти}

      Программы управления  кучей,  ссылки  на  которые  хранятся  в GraphGetMemPtr и  GraphFreeMemPtr,  вызываются  модулем  Graph  для  распределения и освобождения памяти для:

     - многоцелевого буфера,  размер которого может быть установлен программой SetGraphBufSize (по умолчанию 4 Кбайта)

     - драйвера устройства, загружаемого InitGraph (*.BGI файлы)

     - файла  штрихового  шрифта,  загружаемого SetTextStyle (*.CHR файлы)

     Графический буфер   всегда   распределяется  в  куче.  Драйвер устройства распределяется в куче,  если только  Ваша  программа  не загрузила его и не установила связь при помощи RegisterBGIdriver; и файл шрифтов распределяется в куче,  когда Вы  выбираете  штриховой шрифт используя  SetTextStyle,  если  только  Ваша программа его не загрузила или не связала, используя вызов RegisterBGIfont.

     При инициализации  модуля  Graph  эти  указатели  указывают на стандартные программы распределения и освобождения  памяти, которые определены в   разделе   implementation  модуля  Graph.  Вы  можете вставить  Ваши  программы  управления  памятью   присвоением   этим указателям адресов этих программ. Ваши программы должны иметь такой же список параметров,  что и стандартные программы  и  должны  быть объявлены как дальние (far).

     Приведенный ниже   пример    демонстрирует    пользовательские программы распределения   и   освобождения   памяти.  Заметим,  что использование  MgExitProc  автоматически  вызывает  CloseGraph  при завершении программы:

      program UserHeapManagment;

     {показывает как пользователь может составлять программы управления памятью, используя модуль Graph}

     uses

        Graph;

     var

        GraphDriver, GraphMode: Integer;

        ErrorCode: Integer;  { Используется для запоминания кода возвращаемого GraphResult }

         PreGraphExitProc: Pointer; { Используется для сохранения первоначальной процедуры                          выхода }

        ($F+)  { Программа должна быть дальней модели }

      procedure MyGetMeM(var P: Pointer; Size: Word); far;

     { Распределяет  память для драйвера графического устройства, шрифта и сканирующего буфера }

     begin

       GetMet(P, Size);

     end; { MyGetMem }

      procedure MyFreeMem(var P: Pointer; Size: Word); far;

     { Освобождает память графического драйвера, шрифта и сканирующего буфера }

     begin

        if P <> nil then   { Не освобождает если указатель nil (пустой)}

        begin

           FreeMen(P, Size);

           P := nil;

        end;

     end; { MyFreeMem }

      procedure MyExitProc; far;

     { Получает управление при завершении программы }

     begin

        ExitProc :=  PreGraphExitProc; { Восстанавливает первоначальную процедуру }

        CloseGraph; { Очищает кучу }

     end; ( MyExitProc )

      ($F-)

     begin

        { Инсталирует программу выхода }

        PreGraphExitProc := ExitProc;

        ExitProc := @MyExitProc;

        GraphGetMemPtr := @MyGetMem;  { Управление распределением памяти }

        GraphFreeMemPtr := @MyFreeMem; { Управление освобождением  памяти }

        GraphDriver := Detect;

        InitGraph(GraphDriver, GraphMode, '');

        ErrorCode := GraphResult;

        if ErrorCode <> grOk then

        begin

           Writeln('Graphics error: ', GraphErrorMsg(ErrorCode));

           Readln;

           Halt(1);

        end;

        Line(0, 0, GetMaxX, GetMaxY);

        OutTextXY(1, 1, 'Press <Return>:');

        Readln;

     end.   { UserHeapManagment }

[начало] [оглавление]

  

Константы, типы и переменные модуля Graph.

Константы.

       Используйте эти константы драйверов  и  режимов  с InitGraph, DetectGraph и GetModeRange:

 ───────────────────────────────────────────────────────────────────

  Константа      Значение              Описание

───────────────────────────────────────────────────────────────────

  Detect             0       Запрашивает   автообнаружение

  CGA                1

  MCGA               2

  EGA                3

  EGA64              4

  EGAMono            5

  IBM8514            6

  HercMono           7

  ATT400             8

  VGA                9

  PC3270            10

  CurrentDriver   -128    Передается в GetModeRange

   CGAC0              0    320x200 палитра 0: LightGreen,

                          LightRed, Yellow; 1 страница

  CGAC1              1    320x200 палитра 1: LightCyan,

                          LightMagenta, White; 1 страница

  CGAC2              2    320x200 палитра 2: Green,

                          Red, Brown; 1 страница

  CGAC3              3    320x200 палитра 3: Cyan,

                          Magenta, LightGray; 1 страница

  CGAHi              4    640x200 1 страница

   MCGAC0             0    320x200 палитра 0: LightGreen,

                          LightRed, Yellow; 1 страница

  MCGAC1             1    320x200 палитра 1: LightCyan,

                          LightMagenta, White; 1 страница

  MCGAC2             2    320x200 палитра 2: Green,

                          Red, Brown; 1 страница

  MCGAC3             3    320x200 палитра 3: Cyan,

                          Magenta, LightGray; 1 страница

  MCGAMed            4    640x200 1 страница

  MCGAHi             5    640x480 1 страница

   EGALo              0    640x200 16 цветов 4 страницы

  EGAHi              1    640x350 16 цветов 2 страницы

  EGA64Lo            0    640x200 16 цветов 1 страница

  EGA64Hi            1    640x350 4 цвета  1 страница

  EGAMonoHi          3    640x350 64K: 1 страница;

                          256K: 2 страницы

   HercMonoHi         0    720x348 2 страницы

 

  ATT400C0           0    320x200 палитра 0: LightGreen,

                          LightRed, Yellow; 1 страница

  ATT400C1           1    320x200 палитра 1: LightCyan,

                          LightMagenta, White; 1 страница

  ATT400C2           2    320x200 палитра 2: Green,

                          Red, Brown; 1 страница

  ATT400C3           3    320x200 палитра 3: Cyan,

                          Magenta, LightGray; 1 страница

  ATT400Med          4    640x200 1 страница

  ATT400Hi           5    640x400 1 страница

   VGALo              0    640x200 16 цветов 4 страницы

  VGAMed             1    640x350 16 цветов 2 страницы

  VGAHi              2    640x480 16 цветов 1 страница

   PC3270Hi           0    720x350 1 страница

   IBM8514LO          0    640x480 256 цветов

  IBM8514HI          1    1024x768 256 цветов

───────────────────────────────────────────────────────────────────  

[начало] [оглавление]

Значения ошибок, возвращаемые GraphResult:

             Таблица 12.2. Значения ошибок GraphResult.

 ───────────────────────────────────────────────────────────────────

Константа          Значение             Описание

───────────────────────────────────────────────────────────────────

  grOk                0     нет ошибок

  grNoInitGraph      -1     графика не инициализированна  (используйте InitGraph)

  grNotDetected      -2     графическое устройство не обнаружено

  grFileNotFound     -3     файл драйвера устройства не найден

  grInvalidDriver    -4     неправильный файл драйвера устройства

  grNoLoadMem        -5     не достаточно памяти для загрузки драйвера

  grNoScanMem        -6     выход за пределы памяти при заполнении  (scan fill)

  grNoFloodMem       -7     выход за пределы памяти при заполнении  (flood fill)

  grFontNotFound     -8     файл шрифта не найден

  grNoFontMem        -9     не достаточно памяти для загрузки  шрифта

  grInvalidMode     -10     неверный графический режим для этого  драйвера

  grError           -11     графическая ошибка

  grIOerror         -12     ошибка графического ввода/вывода

  grInvalidFont     -13     неверный файл шрифта

  grInvalidFontNum  -14     неверный номер шрифта

───────────────────────────────────────────────────────────────────  

[начало] [оглавление]

SetPalette  и SetAllPalette.

      Используйте   эти   константы   цветов   с   SetPalette    и SetAllPalette: 

    ───────────────────────────────

    Константа        Значение

   ───────────────────────────────

     Black              0

     Blue               1

     Green              2

     Cyan               3

     Red                4

     Magenta            5

     Brown              6

     LightGray          7

     DarkGray           8

     LightBlue          9

     LightGreen        10

     LightCyan         11

     LightRed          12

     LightMagenta      13

     Yellow            14

     White             15

   ───────────────────────────────  

[начало] [оглавление]

  SetRGBPalette.

      Эти константы цветов могут быть  использованы с  SetRGBPalette для выбора стандартных EGA цветов на графическом адаптере IBM 8514:

    ───────────────────────────────

    Константа       Значение

   ───────────────────────────────

    EGABlack           0 темные цвета 

    EGABlue            1

    EGAGreen           2

    EGACyan            3

    EGARed             4

    EGAMagenta         5

    EGABrown          20

    EGALightGray       7

     EGADarkGray       56  светлые цвета

    EGALightBlue      57

    EGALightGreen     58

    EGALightCyan      59

    EGALightRed       60

    EGALightMagenta   61

    EGAYellow         62

    EGAWhite          63

   ───────────────────────────────  

[начало] [оглавление]

Константы типов линий.

      Используйте эти константы  типов  линий  с  GetLineSettings  и SetLineStyle: 

    ───────────────────────────────

    Константа       Значение

   ───────────────────────────────

     SolidLn          0

     DottedLn         1

     CenterLn         2

     DashedLn         3

     UserBitLn        4  Тип линии, определяемый пользователем

     NormWidth        1

     ThickWidth       3

   ───────────────────────────────  

[начало] [оглавление]

Константы управления шрифтом.

     Используйте эти  константы  с  GetTextSettings  и SetTextStyle:

    ───────────────────────────────

    Константа       Значение

   ───────────────────────────────

     DefaultFont       0  8x8 битовый шрифт

     TriplexFont       1  Штриховые шрифты

     SmallFont         2

     SansSerifFont     3

     GothicFont        4

      HorizDir          0  слева направо

     VertDir           1  снизу вверх

      UserCharSize      0  размер символа, определяемый пользователем

   ───────────────────────────────  

[начало] [оглавление]

Константы выравнивания.

      Эти константы   управляют   горизонтальным   и    вертикальным выравниванием для SetTextJustify:

    ───────────────────────────────

    Константа       Значение

   ───────────────────────────────

     LeftText          0

     CenterText        1

     RightText         2

      BottomText        0

     CenterText        1 (уже определена выше)

     TopText           2

   ───────────────────────────────  

[начало] [оглавление]

Константы отсечения.

      Используйте эти  константы  с   SetViewPort   для   управления отсечением.  При  ClipOn  графический  вывод  будет  отсекаться  по границе окна:

    ───────────────────────────────

    Константа       Значение

   ───────────────────────────────

     ClipOn          True

     ClipOff         False

   ───────────────────────────────  

[начало] [оглавление]

Константы полосы.

      Эти константы используются с Bar3D, чтобы указать будет ли 3-х мерная вершина рисоваться на верху полосы:

    ───────────────────────────────

    Константа       Значение

   ───────────────────────────────

     TopOn           True

     TopOff          False

   ───────────────────────────────  

[начало] [оглавление]

Константы шаблона заполнения.

      Эти шаблоны    заполнения   используются   GetFillSettings   и SetFillStyle. Используйте  SetFillPattern  для  определения  Вашего собственного стиля         заполнения,        затем        вызовите SetFillStyle(UserFill,  SomeColor) и сделайте свой шаблон активным:

 ──────────────────────────────────────────────────────────────

    Константа       Значение

──────────────────────────────────────────────────────────────

    EmptyFill          0  заполняет цветом фона

    SolidFill          1  заполняет основным цветом

    LineFill           2  --- заполнение

    LtSlashFill        3  /// заполнение

    SlashFill          4  /// заполнение толстыми линиями

    BkSlashFill        5  \\\ заполнение толстыми линиями

    LtBkSlashFill      6  \\\ заполнение

    HatchFill          7  редкая штриховка

    XHatchFill         8  плотная штриховка

    InterleaveFill     9  пересекающиеся линии

    WideDotFill       10  редкие точки

    CloseDotFill      11  плотные точки

    UserFill          12  определенный пользователем стиль

──────────────────────────────────────────────────────────────  

[начало] [оглавление]

Битовые операторы.

     Используйте эти битовые операторы с PutImage и SetWriteMode:

   ──────────────────────────────────────

       Константа          Значение

   ──────────────────────────────────────

       CopyPut            0    { MOV }

       XORPut             1    { XOR }

   Используйте эти операции только с PutImage:

       OrPut              2    { OR  }

       AndPut             3    { AND }

       NotPut             4    { NOT }

   ──────────────────────────────────────  

[начало] [оглавление]

Константа палитры.

      Эта константа     используется     GetPalette,     GetDefault, SetAllPalette и определяет запись PaletteType:

    ───────────────────────────────

    Константа       Значение

   ───────────────────────────────

    MaxColors         15

   ───────────────────────────────  

[начало] [оглавление]

Типы

      Эта запись  используется  с  GetPalette,  GetDefaultPalette  и SetAllPalette:

   type

    PaletteType = record

        Size   : Byte;

        Colors : array (0.. MaxColors) of Shortint;

  end;

      Эта запись используется с GetLineSettings:

      type

       LineSettingsType = record

           LineStyle : Word;

           Pattern   : Word;

           Thickness : Word;

     end;

      Эта запись используется с GetTextSettings:

      type

       TextSettingsType = record

           Font      : Word;

           Direction : Word;

           CharSize  : Word;

           Horiz     : Word;

           Vert      : Word;

     end;

      Эта запись используется с GetFillSettings:

      type

       FillSettingsType = record

           Pattern : Word;

           Color   : Word;

     end;

      Эта запись используется с GetFillPattern и SetFillPattern:

      type

       FillPatternType = array [1..8] of Byte; { определяемый  пользователем стиль }

      Этот тип определен для Вашего удобства.  Заметим, что оба поля типа Integer:

      type

       PointType = record

          X,Y: Integer;

     end;

      Эта запись используется с GetViewSettings для получения данных о текущем окне:

    type

     ViemPortType = integer;

       X1, Y1, X2, Y2: Integer;

       Clip          : Boolean;

   end;

      Эта запись   используется   с   GetArcCoords   и   может  быть использована для получения информации о последнем  вызове  Arc  или Ellipse:

    type

     ArcCoordsType = record

        X, Y          : Integer;

        Xstart, Ystart: Integer;

        Xend, Yend    : Integer;

   end;  

[начало] [оглавление]

Переменные.

      Эти переменные  указывают на программы управления кучей модуля Graph.  Если  Ваша  программа  использует   собственные   программы управления памятью, присвойте адреса Ваших программ распределения и освобождения памяти переменным GraphGetMemPrt и GraphFreeMemPrt:

 ──────────────────────────────────────────────────────────────

 Переменная        Значение

──────────────────────────────────────────────────────────────

GraphGetMemPrt      Pointer  (распределение кучи)

GraphFreeMemPrt     Pointer  (освобождение кучи)

──────────────────────────────────────────────────────────────  

[начало] [оглавление]

Процедуры.

                Таблица 12.3. Процедуры модуля Graph.

 ───────────────────────────────────────────────────────────────────

   Arc               Рисует дугу от начального угла к конечному,

                     используя (X,Y) как центр

    Bar               Рисует полосу, используя текущий стиль и цвет.

    Bar3D             Рисует 3-х мерную полосу, используя текущий стиль и цвет.

    Circle            Рисует окружность, используя (X,Y) как центр.

    ClearDevice       Очищает экран и устанавливает текущий указатель (CP) в начало.

    ClearViewPort     Очищает окно.

    CloseGraph        Закрывает графическую систему.

    DetectGraph       Проверяет аппаратуру и определяет какой графический драйвер и в каком режиме             используется.

    DrawPoly          Рисует многоугольник текущим цветом и типом  линии.

    Ellipse           Рисует эллиптическую дугу от начального угла к конечному, используя (X,Y) как центр.

    FillEllipse       Рисует заполненный эллипс, используя (X,Y) как центр и XRadius и YRadius как горизонтальные  и вертикальные оси.

    FillPoly          Заполняет многоугольник, используя  сканирование.

    FloodFill         Заполняет ограниченную область, используя текущий шаблон и цвет заполнения.

    GetArcCoords      Позволяет запросить координаты команды Arc.

    GetAspectRatio    Возвращает разрешение экрана из которого может быть вычислен относительный аспект (Xasp/Yasp).

   GetFillPattern    Возвращает шаблон  заполнения, установленный последним вызовом SetFillPattern.

    GetFillSettings   Позволяет запросить текущий шаблон и цвет,  установленные SetFillStyle или SetFillPattern.

    GetImage          Сохраняет битовый образ указанной части экрана в буфере.

    GetLineSettings   Возвращает текущие стиль, шаблон и толщину линии, установленные SetLineStyle.

    GetModeRange      Возвращает минимальный и максимальный графические режимы для данного драйвера.

    GetPalette        Возвращает текущую палитру и ее размер.

    GetTextSettings   Возвращает текущий шрифт, направление, размер и выравнивание текста, установленные  SetTextStyle и SetTextJustify.

    GetViewSettings   Позволяет запросить текущие параметры окна и отсечения.

    GraphDefaults     Устанавливает текущий указатель (CP) в начало и переустанавливает графическую систему.

    InitGraph         Инициализирует графическую систему и  устанавливает устройство в графический режим.

    Line              Рисует линию от (X1,Y1) к (X2,Y2).

    LineRel           Рисует линию от текущего указателя (CP) к  точке, лежащей на заданном растоянии.

    LineTo            Рисует линию от текущего указателя к (X,Y).

    MoveRel           Передвигает текущий указатель (CP) на заданное  расстояние от его текущей позиции.

    MoveTo            Передвигает текущий указатель (CP) в (X,Y).

    OutText           Выводит текст на экран от текущего указателя.

    OutTextXY         Выводит текст на экран.

    PieSlice          Рисует и заполняет сектор, используя (X,Y) как центр и рисуя от начального угла к конечному.

    PutImage          Выводит битовый образ на экран.

    PutPixel          Рисует точку (пиксел) в (X,Y).

    Rectangle         Рисует прямоугольник, используя текущий цвет и тип линии.

    RestoreCRTMode    Восстанавливает видеорежим, который был до инициализации графики.

    Sector            Рисует и заполняет сектор эллипса.

    SetActivePage     Устанавливает  активную  страницу для   графического вывода.

    SetAllPalette     Изменяет цвет палитры.

    SetAspectRatio    Изменяет значение относительного аспекта.

    SetBkColor        Устанавливает цвет фона.

    SetColor          Устанавливает основной цвет, которым  будет  осуществляться рисование.

    SetFillPattern    Выбирает шаблон заполнения, определенный пользователем.

    SetFillStyle      Устанавливает шаблон заполнения и цвет.

    SetGraphBufSize   Позволяет изменить размер буфера для функций  заполнения.

    SetGraphMode      Переводит систему в графический режим и  очищает экран.

    SetLineStyle      Устанавливает текущие толщину и стиль линии.

    SetPalette        Изменяет один цвет палитры, указанный через  ColorNum и Color.

    SetRGBPallete     Позволяет модифицизовать палитру для IBM 8514 и VGA.

    SetTextJustify    Устанавливает выравнивание текста,  используемое OutText и OutTextXY.

    SetTextStyle      Устанавливает текущий шрифт, стиль и размер  текста.

    SetUserCharSize   Позволяет изменить ширину и высоту  символа  для штрихового шрифта.

    SetViewPort       Устанавливает текущее окно для графического  вывода.

    SetVisualPage     Устанавливает номер видимой графической страницы.

    SetWriteMode      Устанавливает режим вывода (копирование или XOR) для линий, рисуемых с DrawPoly, Line,  LineRel, LineTo, Rectangle.

───────────────────────────────────────────────────────────────────  

[начало] [оглавление]

Функции

                 Таблица 12.4. Функции модуля Graph.

 ───────────────────────────────────────────────────────────────────

   GetBkColor        Возвращает текущий фоновый цвет.

    GetColor          Возвращает текущий цвет.

    GetDefaultPalette Возвращает   аппаратную   палитру   в   записи  PaletteType.

    GetDriverName     Вoзвращает строку с именем текущего драйвера.  

   GetGraphMode      Возвращает текущий графический режим.  

   SetMaxColor       Возвращает максимальный цвет, который можно  задать в SetColor.

    GetMaxMode        Возвращает номер максимального режима текущего  загруженного драйвера.

    GetMaxX           Возврашает максимальный Х (разрешение по  горизонтали) для текущего графического        драйвера и режима.

    GetMaxY           Возвращает максимальный Y (разрешение по вертикали) для текущего графического          драйвера и режима.

    GetModeName       Возвращает строку с именем указанного графического режима.

    GetPaletteSize    Возвращает размер таблицы  палитры.

    GetPixel          Возвращает цвет точки в (X,Y).

    GetX              Возвращает координату X текущей позиции (CP).

    GetY              Возвращает координату Y текущей позиции (СР).

    GraphErrorMsg     Возвращает строку сообщения об ошибке для  заданного кода ErrorCode.

    GraphResult       Возвращает код ошибки для последней  графической операции.

    ImageSize         Возвращает число байт, требуемое для заполнения прямоугольной области экрана.

    InstallUserDriver Устанавливает  пользовательский  драйвер устройства в BGI таблицу драйверов устройств.

    InstallUserFont   Устанавливает новый шрифт, который не встроен в BGI систему.

    RegisterBGIdriver Регистрирует  драйвер BGI для графической системы.

    RegisterBGIfont   Регистрирует шрифт BGI для графической  системы.

    TextHeight        Возвращает высоту строки в пикселах.

    TextWidth         Возвращает ширину строки в пикселах.

───────────────────────────────────────────────────────────────────

    Для детального описания этих процедур и функций  см.  Справочное руководство по библиотеке.

[начало] [оглавление]


Предыдущая страница     |     Следующая страница


Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

 

 

Опрос

Конкурсы
Реклама

 

Web дизайн: Бурлаков Михаил    

Web программирование: Бурлаков Михаил

Используются технологии uCoz