Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика - лекции.doc
Скачиваний:
18
Добавлен:
07.11.2018
Размер:
512.51 Кб
Скачать

Модуль graph.

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

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

Драйверы.

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

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

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

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

(0,0) (639,0)

(0,479) (639,479)

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

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

Write('ABC');

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

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 файл.