Модуль graph. Реализация полной библиотеки

Страницы работы

Фрагмент текста работы

должны использоваться   с  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  экранные координаты  каждого  из четырех углов и точка в центре экрана будут представлены:

.T 14

(0,0)                   (319,0)

------------------------¬

¦                       ¦

¦       (159,99)        ¦

¦           .           ¦

¦                       ¦

¦                       ¦

¦                       ¦

L-----------------------(0,199)                  (319,199)

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

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

Многие графические  системы  поддерживают   понятие   текущего указателя  (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 позволяет заполнять многоугольник штриховкой  или  другим

Похожие материалы

Информация о работе