|
Часть 14
ГЛАВА 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');
Readln;
RestoreCRTMode;
Writeln('Now in text mode. Press');
Readln;
SetGraphMode(GraphMode);
OutText('Back in Graphics mode. Press');
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 :');
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 Возвращает ширину строки в пикселах.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Для детального описания этих процедур и функций см. Справочное
руководство по библиотеке.
|
|