Модуль Graph реализует полную библиотеку  из  более  чем  50  графических  программ  -  от вызовов процедур и функций высокого  уровня, как, например, SetViewPort, Bаr3D, DrаwPoly, до программ,  ориентированных  на работу  с  битами, таких,  как GetImage или  РutImage. Поддерживается несколько видов закрашивания и типов линий, и имеется несколько шрифтов, которые можно изменять по величине, выравнивать и ориентировать горизонтально или вертикально.

Для компиляции программы,  использующей модуль Grаph, вам не  потребуется  никаких  внешних файлов (кроме,  конечно,  исходного текста вашей программы, компилятора и доступа к стандартным модулям в  библиотеке исполняющей системы).

  Таблица 19.1

  ЪДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДї

   і Тип программы  і Библиотека і Имя модуля Graph і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДґ

   і Реальный режим і TURBO.TPL  і GRAPH.TPU  і

   і Защищенный режим  і TPP.TPL   і GRAPH.TPP  і

  АДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДЩ

Для запуска программы,  использующей модуль Grарh, кроме вашей программы с расширением .EXE вам потребуются один  или  более  графических драйверов (см. далее файлы .BGI). Кроме того вам потребуется также один или более файлов шрифтов (.CНR), если в вашей  программе используются какие-либо шрифты.

Примечание: В  соответствии  с лицензионными условиями  вы можете распространять файлы .CHR и .BGI наряду со своими  программами.

 Драйверы

 ДДДДДДД

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

CGA   Неrcules

МСGA AT&T 400

EGA   3270 PC

VGA   IBM 8514

Каждый драйвер  содержит выполняемый код и данные и хранится  в отдельном файле на диске.  Во время работы процедура  InitGraph  идентифицирует  графическую аппаратуру  и  производит загрузку и  инициализацию соответствующего графического  драйвера,  переводит  систему в графический режим,  а затем возвращает управление вызывающей программе. Процедура CloseGraph выгружает драйвер из памяти и  восстанавливает предыдущий видеорежим.  С помощью программ  RеstoreCrtMode и SetGraphMode вы можете переключаться между текстовым и графическим режимом.  См. Главу 1 в "Справочном руководстве программиста".

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

 ЪДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДї

  іДрайвер   і  Аппаратура   і

 ГДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ

  і CGA.BGI  і Драйвер для адаптеров CGA, MCGA фирмы IBM.  і

  і EGAVGA.BGI  і Драйвер для адаптеров EGA, VGA фирмы IBM.   і

  і HERC.BGI і Драйвер для монохромного адаптера Hercules фир-і

  і  і мы IBM. і

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

  і  PC3270.BGI  і Драйвер для IBM 3270 РС.  і

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

 АДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДЩ

Borland Pascal поддерживает графическую плату IBM 8514,  которая представляет собой новую графическую плату с высоким разрешением,  позволяющую получить разрешающую способность до 1024х768  точек и  палитру,  содержащую 256 оттенков из 256 цветов.  Файл  драйвера для этой графической платы называется IBM8514.BGI.

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

Для платы IBM 8514 поддерживаются следующие режимы: IBM8514LO  (640х480 элементов изображения) и IBM8514HI  (1024х768  элементов  изображения). Обе константы режима определены в интерфейсной части GRAPH.TPU.

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

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

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

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

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

По соглашению верхний левый  угол экрана  имеет  координату  (0,0).  У более правого столбца координата х больше, у более нижней строки больше координата y. То есть координата х увеличивается при перемещении вправо, а координата y - при перемещении вниз.  Таким образом координаты каждого из четырех  углов  и  конкретной  точки (середины экрана) будут выглядеть следующим образом:

(0,0) (319,0)

ЪДДДДДДДДДДДДДДДДДДДДДДДї

і  і

і (159,99)  і

і  .  і

і  і

і  і

і  і

АДДДДДДДДДДДДДДДДДДДДДДДЩ

  (0,199)   (319,199)

Рис. 19.1 Экран с координатами xy.

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

Write('ABC');

В текстовом режиме  предшествующий  оператор  Write  оставит  курсор  в  колонке,  непосредственно следующим за буквой C.  Если  буква C была введена в колонке 80,  то курсор перейдет на колонку  1 следующей строки. Если буква c была введена в позиции 80 строки  25, то произойдет пролистывание (прокрутка)  экрана  вверх на  1  строку и курсор будет находится в 1 позиции 25 строки.

MoveTo(0,0);

LineTo(20,20)

В графическом режиме данный оператор LinеТо  оставит текущий  указатель в последней заданной точке (20,20).  Если действует режим отсечения,  то реально выводимая прямая будет отсечена до текущей точки.  Заметим, что текущий указатель никогда не отсекается.

Команда МоvеТо является эквивалентом команды GotoXY.  Единственное ее назначение - это перемещение текущего указателя. Перемещение  текущего указателя может использоваться только в следующих командах,  использующих текущий указатель: MoveTo, InitGraph,  MoveRel,  LineTo,  LineRel,  OutText, SetGraphMode, ClearDevice,  SetViewPort и ClearViewPort.  Последние 5 из них перемещают текущий указатель в точку (0,0).

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

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

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

Выравнивание графического  текста  управляется   процедурой  SetTextJustify.  Масштабирование  и выбор шрифта осуществляется с  помощью процедуры SetTextStyle. Графический текст выводится с помощью процедур ОutText или ОutTextХY. Запрос о текущих установленных для текста параметрах выполняется с  помощью  обращения к  процедуре GetTextSettings. Векторные шрифты хранятся каждый в отдельном файле на диске и должны присутствовать там во время работы (при вызове процедуры SetTextStyle).  Размер векторного шрифта  можно настроить с помощью процедуры SetUserCharSize.  Файлы шрифтов (которые имеют расширение .CHR) могут загружаться с диска автоматически модулем Graph,  или их можно компоновать с программой  пользователя  или  загружать  и "регистрировать" с помощью модуля  Graph.

Для преобразования файла шрифта (или любого другого предназначенного для этой цели двоичного файла данных) в файл .OBJ,  который можно компоновать с модулем или программой с помощью директивы компилятора  $L в  Borland Pascal предусмотрена специальная  утилита BINOBJ.EXE.  При этом становится возможным поместить  все  файлы  шрифтов в выполняемый файл .EXE (см.  комментарии в начале  примера программы BGILINK.PAS на дистрибутивном диске).

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

Для закрашивания  области или многоугольника пересекающейся  штриховкой или чем-либо более сложным можно использовать процедуры SetFillStyle, SetFloodPattern, FillPoly и FloodFill.

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

Для считывания  и вывода элементов изображения предусмотрены  процедуры GetPixel и Putpixel.  Чтобы сохранить и восстановить на  экране   прямоугольную  область,  можно  использовать  процедуры  GetImage и PutImage.  Они обеспечивают полное выполнение операций  процедуры ВitВlt (нормальное, хоr, оr, аnd, nоt).

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

Внутренние ошибки   модуля  Graph   возвращаются   функцией  GraphResult. Эта функция возвращает код ошибки, показывающий состояние последней графической операции.  Коды  возврата приведены  в разделе  по  GraphResult в Главе 1 ("Справочник по библиотеки")  "Справочного руководства программиста".

Значение кода  возврата для функции GraphResult устанавливается следующими процедурами:

  DetectGraph   SetTextStile SetAllPalette

  InitGraph  SetGraphMode SetFillPattern

  FloodFill  CloseGraph   SetFillStyle

  FillPoly  GetGraphModeSetGraphBufSize

  DrawPoly   ImageSize SetGraphMode

  Bar  InstallUserDriver  SetLineStyle

  Bаr3D   InstallUserFont SetPalette

  PieSlice   RegisterBGIDriver  SetTextJustify

  ClearViewPort RegisterGBIFont

Заметим, что функция GraphResult после обращения к ней сбрасывает код ошибки в 0.  Таким образом, пользователь должен сохранить значение кода ошибки во временной переменной и затем  проверить его.

Приведем пример простой графической программы:

1 program GraphTest;

2 uses

3 Graph;

4 var

5 GraphDriver  : integer;

6 GraphMode : integer;

7 ErrorCode : integer;

8 begin

9 GraphDriver := Detect;{ Установить флаг: выполнить  распознавание }

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

11  ErrorCode := GraphResult;

12  if ErrorCode <> grOk then { ошибка? }

13  begin

14 Writeln('Ошибка графики: ',GraphErrorMsg(ErrorCode);

15  Writeln('Программа аварийно завершила работу...');

16 Halt(1);

17  end;

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

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

20  SetTextStyle(DefaultFont, HorizDir, 3);

21  OutTextXY(GetMaxX div 2, GetMaxY div 2, { центр экрана }

22   'Графический интерфейс фирмы Borland (BGI)');

23  Readln;

24  CloseGraph;

25 end. { GraphTest }

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

Плата AT&T  400  или IBM 8514 не распознается автоматически.  Тем не менее, вы можете пользоваться драйвером графики AT&T путем  отмены автоматической проверки, пересылки исполняемого кода драйвера AT&T процедуре InitGraph и установки допустимого графического режима.  Замените 8 и 9 строку в предыдущем примере следующими  тремя строками:

GraphDriver := ATT400;

GraphMode := ATT400Hi;

InitGraph(GraphDriver, GraphMode, 'C:BPBGI');

Это укажет  графической системе  на  необходимость загрузки  драйвера устройства AT&T400, расположенного в каталоге C:BPBGI,  и установит графический режим 640 на 400.

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

1 program GraphTest;

2 uses

3 Graph;

4 var

5 GraphDriver  : integer;

6 GraphMode : integer;

7 ErrorCode : integer;

8 begin

9 GraphDriver := Detect;{ Установить флаг: выполнить  распознавание }

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

11  ErrorCode := GraphResult;

12  if ErrorCode <> grOk then { ошибка? }

13  begin

14 Writeln('Ошибка графики: ',GraphErrorMsg(ErrorCode);

15Writeln('Программа аварийно завершила работу...');

16 Helt(1);

17  end;

18  OutText('Графический режим. Нажмите <RETURN>');

19  Readln;

20  RestoreCrtMode;

21  Write('Текстовый режим. Нажмите <RETURN>');

22  Readln;

23  SetGraphMode(GraphMode);

24  OutText('Снова графический режим. Нажмите <RETURN>');

25  Readln;

26  CloseGraph;

27 end. { GraphTest }

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

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

<

Для модуля  Graph предусмотрены две программы управления динамически распределяемой областью  GraphFrееМем  и  GraphGetМем.  Первая из них освобождает память, распределенную для драйверов, а  вторая - распределяет память для драйверов графических устройств.  Стандартные программы имеют следующий вид:

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

{ выделить память для драйверов графических устройств }

 

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

{ освободить память для драйверов графических устройств }

В модуле Graph имеются два указателя,  которые по  умолчанию  указывают на две описанные здесь  стандартные подпрограммы.  Эти  указатель определяются следующим образом:

var

   GraphGetMemPtr  : pointer;

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

   GraphFreeMemPtr : pointer;

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

Во время инициализации модуля Graph эти  указатели ссылаются  на стандартные графические программы распределения/освобождения,  которые определяются  в секции  реализации модуля Graph.  Память  распределятся в трех различных целях:

* для многоцелевых графических буферов, размер которых устанавливается вызовов SegGraphBufSize (по умолчанию это 4К);

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

* для файла  векторного шрифта,  загруженного  SetTextStyle   (файлы *.CHR).

Графический буфер  всегда выделяется в динамически распределяемой области памяти.  Память для драйвера устройства выделяется  в динамической  памяти, если  программа  не загружает его или не  компонуется с ним вызовом RegisterBGIdriver. При выборе векторного шрифта  с помощью SetTextStyle также выделяется память в динамически распределяемой области (если ваша программа не компонуется со шрифтом и не использует RegisterBGIfont).

Чтобы задать  ваше собственное управление памятью,  в модуле  Graph вы можете изменить значения этих указателей так,  чтобы они  ссылались  на  ваши  собственные программы.  Программы, заданные  пользователем, должны иметь тот же список параметров, что и стандартные  программы,  и должны иметь дальний тип вызова.  Приведем  далее пример заданных пользователем программ распределения и  освобождения памяти.  Заметим, что при использовании процедуры Eхit  автоматически вызывается процедура CloseGraph.

  program UserHeapManegement;

  { программа показывает,  как пользователь может работать  с

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

  uses

  Graph;

  var

  GraphDriver, GraphMode : Integer;

  ErrorCode  : Integer; { используется для

   сохранения кода возврата функции GraphResult }

  PreGraphExitProc : Pointer { используется для сох-

   ранения исходной процедуры выхода }

  { процедуры пользователя должны использовать дальний тип обращения }

   procedure MyGetMem(var P : Pointer; Size : word); far;

  { выделить память для драйверов графических устройств }

   begin

  Write('Была вызвана процедура ',

   'MyGetMem, нажмите <Enter>:');

  GetMem(P, Size);

   end; { MyGetMem }

 

   procedure MyFreeMem(ver P : Pointer; Size : word); far;

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

   begin

  RestoreCRTMode;

  Write('Была вызвана процедура MyFreeMem, нажмите ',

   '<Enter>:'); Readln;

  if P <> Nil Then { не освобождать пустые указатели }

  begin

FreeMem(P, Size);

P := Nil;

     end; { MyFreeMem }

 

  procedure MyExitProc; far;

  { процедура всегда получает вызов при прекращении работы программы }

  begin

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

CloseGraph;   { очистить динамически распределяемую  область }

  end; { MyExitProc }

 

  begin

  { инициализировать программу очистки памяти }

  PreGraphExitProc := ExitProc;

  ExitProc := @MyExitProc;

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

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

  GraphDriver := Detect;

  InitGraph(GraphDriver, GraphMode, '');

  ErrorCode := GraphResult;

  if ErrorCode <> grOk then

   begin

Writeln('Графическая ошибка: ' GraphErrorMsg(ErrorCode);

Readln;

Halt(1);

   end;

   Line(0, 0, GetMaxX, GetMaxY);

   OutText(1, 1, 'Нажмите клавишу <Enter>:');

   Readln;

  end. { UserHeapManegement }

Если целевой  платформой является защищенный режим DOS, то  при использовании подобных программ следует иметь в виду  следующее: вы  должны обеспечить,  что любой возвращаемый GetMem указатель должен иметь нулевое смещение.  Сделать это можно с  помощью  функции GlobalAllocPtr:

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

var

P: Pointer;

bagin

P:= GlobalAllocPtr(HeapAllocFlags, Size);

GetMem(P, 4096);

end;  { MyGetMem }

 

Таблица 19.3

 ЪДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї

  і  Подпрограмма і Описание і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і Arс  і Рисует дугу окружности от  начального углаі

  і і до конечного угла;  точка (x,y) берется  ві

  і і качестве центра окружности.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і Bаr  і Рисует столбец, используя текущий тип зак-і

  і і раски.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і Bаr3D   і Рисует  трехмерный столбец, используя те-і

     і і кущий тип закраски. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і Circlе  і Рисует окружность с центром в точке (x,y).і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і ClearDeviсе   і Сбрасывает  текущие параметры, установлен-і

  і і ные для устройства вывода, и подготавлива-і

  і і ет его для вывода.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і ClearViewPort і Очищает  текущую область  просмотра (окноі

  і і экрана). і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і CloseGraph і Выполняет останов графической системы. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і DetectGraph   і Распознает аппаратуру и определяет,  какойі

  і і графический драйвер  и режим нужно исполь-і

  і і зовать.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і DrawPoly   і Рисует многоугольник,  используя  текущийі

  і і тип линии и цвет. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і Ellipse і Рисует  эллиптическую  дугу от  начальногоі

  і і угла до конечного угла,  использую (Х,Y),і

  і і как точку центра. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

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

  і і образователь развертки. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і FloodFill  і Закрашивает  ограниченную область, исполь-і

  і і зуя текущий образец закраски. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetArcCoords  і Позволяет  пользователю  запрашивать коор-і

  іі динаты последней команды Arс. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetAspectRatio   і Возвращает действующее  разрешение графи- і

  і і ческого экрана,  на  основе которого можеті

  і і быть вычислен коэффициент  относительногоі

  і і удлинения (Хаsр,Yаsр).  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

 і  GetBkСоlor і Возвращает текущий фоновый цвет. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetCоlor   і Возвращает текущий цвет рисунка.    і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetDefaultPaletteі В записи типа PaletteType  возвращает ис-і

  і і пользуемую по умолчанию палитру. і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetDriverName і Возвращает  строку,   содержащую   имя те-і

  і і кущего драйвера.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetFillPattern   і Возвращает  последний образец заполнителя,і

  і і установленный с помощью обращения к проце-і

  і і дуре SetFillPattern. і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetFillSetting   і Позволяет  пользователю выполнить запрос оі

  і і текущем образце и цвете закраски, установ-і

  і і ленными с помощью процедур SetFillStyle иі

  і і SetFillPattern.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetImage   і Сохраняет  двоичный образ заданной областиі

  і і в буфере.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

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

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetLineSettings  і Возвращает текущий тип линии,  образец ли-і

  і і нии и толщину линии,  заданные  процедуройі

  і і SetLineStyle.     і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetMaxColor   і Возвращает  максимальное  значение цвета,і

  і і которое можно передать процедуре SetColor.і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetMAxMode і Возвращает  максимальный  номер режима дляі

  і і текущего загруженного драйвера.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetМахХ і Возвращает для текущего графического драй-і

  і і вера и режима самую правую колонку (разре-і

  і і шение по х).   і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetМахY і Возвращает для текущего графического драй-і

  і і вера и режима самую нижнюю строку  (разре-і

  і і шение по у).   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

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

  і і ры.   і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetPixel   і Возвращает значение элемента изображения ві

  і і точке Х,Y.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

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

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetTextSettings  і Возвращает текущий текстовый  шрифт,  нап-і

  і   і равление, размер и выравнивание для  него,і

  і і установленные  с помощью процедурі

  і і SetTextStyle и SetTextJustify.   і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetViewSettings  і Позволяет пользователю выдать запрос о те-і

  і і кущей области изображения и параметрах от-і

  і і сечения изображения. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetХ і Возвращает  координату   Х текущей позицииі

  і і (текущего указателя).   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GetY і Возвращает  координату  Y текущей позицииі

  і і (текущего указателя).   і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GraphErrorMsg і Для заданного кода ошибки возвращает стро-і

  і і ку сообщения об ошибке. і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і GraphResult   і Возвращает   код ошибки для последней гра-і

  і і фической операции.   і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і InitGraph  і Инициализирует  графическую  систему и пе-і

  і і реводит аппаратуру в графический режим.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і  ImageSize  і Возвращает число  байт, которые  требуют-і

  і і ся для сохранения  прямоугольной  областиі

  і і экрана.  і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і InstallUserDriverі Устанавливает добавленный   пользователемі

  і і драйвер в таблице драйверов устройств BGI.і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і InstallUserFont  і Устанавливает новый файл шрифта, не встро-і

  і і енный в графическую систему.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і InitGraph  і Инициализирует графическую систему и пере-і

  і і водит аппаратные  средства  в  графическийі

  і і режим.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і Line і Рисует  прямую линию  из  точки (x1,y1) ві

  і і (x2,y2). і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і LineRel    і Рисует прямую линию  до точки,  представ-і

  і і ляющей собой относительное  расстояние оті

  і і текущего указателя.  і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і LinеTо  і Рисует   линию из  текущего  положения ві

  і і точку (x,y).   і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і МоveRеl і Перемещает  текущий  указатель на расстоя-і

  і і ние, являющееся относительным  расстояниемі

  і і от текущей позиции.  і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і МоvеТо  і Перемещает   текущий   указатель в  точкуі

  і і (x,y).   і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і ОutText і Посылает  строку на устройство вывода, на-і

  і і чиная с текущего указателя.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і ОutTextХY  і Посылает строку на устройство вывода.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і PieSlice   і Рисует сектор.  Точка (Х,Y) используется ві

  і і качестве центра,  а сектор рисуется от на-і

  і і чального до конечного угла.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і РutImagе   і Выводит на экран двоичный образ. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і РutРiхеl   і Строит элемент изображения в точке x,y.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і Rесtanglе  і Рисует  прямоугольник,  используя  текущийі

  і і тип линии и цвет. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і  RegisterBGIDriverі Регистрирует допустимый  драйвер (форматаі

  і і BGI) в графической системе.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і RegisterBGIFont  і Регистрирует в графической  системе допус-і

  і і тимый (формата BGI) шрифт. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і RеstoreCRTМоdе   і Восстанавливает  исходный  режим  экрана,і

 і і который был  установлен  при инициализацииі

  і і графики. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetActivePage і Устанавливает для  графического вывода ак-і

  і і тивную страницу.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetAllPalette і Изменяет  все цвета палитры, как было ука-і

  і і зано. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetAspectRatio   і Изменяет принятый по умолчанию коэффициенті

  і і относительного удлинения.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetBkСоlor і Используя палитру,  устанавливает  текущийі

  і і фоновый цвет.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetColor   і Используя палитру,  устанавливает  текущийі

  і і цвет рисунка.  і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetFillPattern   і Выбирает образец закраски,  заданный поль-і

  і і зователем.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetFillStyle  і Устанавливает образец закраски и ее цвет. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetGraphBufSize  і Позволяет изменить размер  буфера, исполь-і

  і    і зуемого для опроса и закраски.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetGraphMode  і Переключает  систему  в графический режимі

  і і и очищает экран.  і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetLineStyle  і Устанавливает  текущий  тип линии и ее ши-і

  і і рину. і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetPalette і Изменяет  один цвет палитры, заданный пе-і

  і і ременными Colornum и Color.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetGRBPalette і Позволяет  модифицировать   записи  палит-і

  і і ры для драйверов IBM 8514 и VGA. і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetTextJustify   і С  помощью ОutTеxt   и  ОutTехtХY  уста-і

  і і навливает значения для выравнивания  текс-і

  і і та.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetTextStyle  і Задает  текущий текстовый шрифт, его тип иі

  і і коэффициент размера символа.  і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetUserCharSize  і Позволяет вам для  векторных  шрифтов  из-і

  і і менить высоту и ширину символа.  і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetViewPort   і Для  графического   вывода   устанавливаеті

  і і текущую область вывода или окно. і

  ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і SetVisualPage і Задает  визуальный номер графической стра-і

  і і ницы. і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і  SetWriteMode  і Устанавливает  режим вывода на экран (ко-і

  і і пирование или с помощью операции XOR)  дляі

  і і линий, вычерчиваемых процедурами DrawPoly,і

  і і Line, LineRel, LineTo, Rectangle.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і TехtНеight і Возвращает  высоту  страниц в   элементахі

  і і изображения.   і

 ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДґ

  і TехtWidth  і Возвращает  ширину   строки в   элементахі

  і і изображения.   і

  АДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ

 

Подробное описание каждой процедуры и функции дано в Главе 1  ("Справочник по библиотеке") "Справочного руководства программиста".

В модуле Graph имеется много полезных описаний типов и констант, на которое вы можете ссылаться.

Константы модуля Graph можно сгруппировать по их назначению.  Подробное описание каждой константы дано в Главе  1  ("Справочник  по библиотеке") "Справочного руководства программиста".

   Группы констант модуля Graph   Таблица 19.4

 ЪДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДї

  іГруппа констант   і  Описание   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Константы драйверов   і Константы, определяющие видеодрайве-і

  і  и режимов і ры и режимы; используются в подпрог-і

  і і раммах  InitGraph,   DetectGraph  иі

  і і GetModeRange.  і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  grXXXX і Константы,   идентифицирующие типі

  і і ошибки, возвращаемой GraphResult.   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Константы цветов   і Константы,  определяющие  цвета. Ис-і

  і і пользуются в  подпрограммахі

  і і SetPalette и SetAllPalette.   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Константы цветов   і Константы, используемые  в  подпрог-і

  і  для SetRGBPalette  і рамме SetGRBPalette  для  выбора наі

  і і IBM 8514 стандартных цветов EGA. і

  ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Константы стиля і Константы, используемые для  опреде-і

  і  линии  і ления стиля и толщины линии; исполь-і

  і і зуются с   GetLineSettings  иі

  і і SetLineStyle.  і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Константы шрифта   і Используются для идентификации шриф-і

  іі тов в  подпрограммах GetTextSettingsі

  і і и SetTextSetting. і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Константы выравниванияі Константы, управляющие  горизонталь-і

  і і ным и  вертикальным  выравниванием.і

  і і Используются в SetTextJustify.   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Константы отсечений   і Константы,  управляющие  отсечением.і

  і і Используются в SetViewPort.   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Константы столбцов і Управляют   изображением   "вершины"і

  і і трехмерного столбца;  используются ві

  і і Bar3D.   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Образцы закраски   і Определяют образец закраски области.і

  і і Используются в   GetFillSettings   иі

  і і SetFillStyle.  і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  Операции BitBlt і Операции (копирование, xor, or, and,і

  і і not), которые  используются  ві

  і і PutImage и SetWriteMode.   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ

  і  MaxColors і Константы, определяющие максимальноеі

  і і число цветов   в   GetPalette,і

  і і GetDefaultPalette и SetAllPalette.  і

 АДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДЩ

В модуле Graph определены следующие типы:

  Типы модуля Graph   Таблица 19.5

  ЪДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДї

  і   Тип  і   Описание   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ

  і  PaletteType і Запись, определяющая  размер и  цветаі

  і   і палитры; используется  в GetPalette,і

  і   і GetDefaultPalette и SetAllPalette.   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ

  і  LineSettingsType  і Запись, определяющая стиль, образец иі

  і   і толщину линии; используетcя і

  і   і GetLineSettings.   і

  ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ

  і  FillSettingsType  і Запись, определяющая текст. Использу-і

  і   і ется в GetTextSettings.  і

  ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ

  і  FillPatternType   і Запись, определяющая  заданный  поль-і

  і   і зователем образец   закраски. Даннаяі

  і   і записьиспользуется процедурамиі

  і  і GetFillPattern и SetFillPattern. і

 ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ

  і  PointType   і Тип,  определенный для вашего удобст-і

  і   і ва. і

 ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ

  і  ViewPortType   і Запись, сообщающая о состоянии  теку-і

  і   і щей области  просмотра;  используетсяі

  і   і GetViewSettings.   і

 ГДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ

  і  ArcCoordsType  і Запись  для  получения  информации  оі

  і   і последнем вызове Arc или Ellipse; ис-і

  і   і пользуется GetArcCoords. і

 АДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДЩ

Модуль Graph содержит две переменные,  которые вы можете использовать: GraphGetMemPtr и GraphFreeMemPtr.  Они применяются  в  подпрограммах управления  динамически распределяемой областью памяти. Прочитать о них можно в Главе 1 ("Справочник  по  библиотеке") "Справочного руководства программиста".