.BGIIBM 8514
Драйвери являють собою файли з розширенням .BGI, які забезпечують взаємодію програм з графічними пристроями (згідно стандартам фірми Borland, розширення -BGIдолжни мати файли графічного інтерфейсу (BorlandGraphicInterface)). При ініціалізації певного графічного режиму підключається відповідний драйвер. Для забезпечення роботи програми в одному з графічних режимів процедура InitGraphопределяет тип адаптера і завантажує відповідний BGI-файл. Процедура CloseGraph служить для видалення графічного драйвера з пам'яті і відновлення текстового режиму роботи відеоадаптера.
При роботі з графікою в Турбо Паскалі є можливість підключати не тільки стандартні, але й користувальницькі драйвери. Останні повинні задовольняти стандарту BorlandInternational. У модулі Graph мається процедура RegisterBGIDriver, яка забезпечує підтримку роботи з драйверами користувача.
1.4 Ініціалізація графіки
· заголовний файл graphics.h,
· бібліотечний файл graphics.lib,
· драйвери графічних пристроїв (* .bgi),
· шрифти (* r).
Управління екраном в графічному режимі проводиться за допомогою набору функцій, прототипи яких знаходяться в заголовному файлі graphics.h. Для роботи в графічному режимі файл graphics.h повинен бути підключений за допомогою директиви include препроцесора мови Cи до всіх модулів, що використовують графічні підпрограми. Перш ніж використовувати графічні функції, необхідно перемкнути відеоадаптер в графічний режим (за замовчуванням він знаходиться в текстовому режимі). Для ініціалізації графіки призначена функція initgraph (). Її прототип -voidinitgraph (int driver, int mode, char path); де int driver - тип підключається драйвера, int mode - режим роботи підключеного драйвера, char path - місце розташування драйвера.
Функція initgraph () зчитує в пам'ять вказаний драйвер, встановлює відеорежим, відповідний аргументу mode, і визначає маршрут до директорії, в якій знаходиться файл .bgi (драйвер). Якщо маршрут не вказаний, то передбачається, що цей файл розташований в поточній директорії.
При використанні initgraph () можна вказати або конкретний драйвер (наприклад, egavga.bgi), або задати автоматичне визначення (детектування) типу відеоадаптера і вибору відповідного драйвера вже під час виконання програми (макрос DETECT). Це дозволяє без зміни переносити програми на комп'ютери з іншими відеоадаптерами. Наприклад,
· int D=DETECT, M;
· initgraph;
У наведеному прикладі мається на увазі, що файл драйвера (наприклад, egavga.bgi) розташований в поточній директорії. Ця функція очищає екран монітора і переводить його в графічний режим 640 * 480 * 16 (дозвіл монітора 640 * 480, 16 кольорів).
Щоб вийти з графічного режиму і перейти назад в текстовий режим, необхідно використовувати функцію voidclosegraph (void);
Функція closegraph () звільняє пам'ять, використовувану графічними функціями, і встановлює текстовий режим, який був до виклику функції initgraph (), при цьому відбувається очищення екрана. Загалом послідовність дій для роботи в графічному режимі виглядає наступним чином:
· Перехід в графічний режим;
· Працюємо з графіком;
· Вихід з графічного режиму.
Глава 2. Побудова зображення на екрані
.1 Графічні примітиви
Хоча будь-яке зображення можна побудувати з точок, але програмувати здобуття складної малюнка чи креслення, використовуючи тільки процедуру поставити крапку, було б занадто незручно і громіздко. У будь-якому графічному пакеті існують процедури малювання основних геометричних фігур: прямих ліній, кіл, еліпсів, прямокутників і т.п. Такі постаті називають графічними примітивами.
Розглянемо кілька основних процедур малювання графічних примітивів, наявних в модулі Graph.
Лінія із заданими координатами кінців (XI, Y1) і (Х2, Y2):
Procedure Line (XI, Y1, Х2, Y2: Integer);
Лінія від поточної точки до точки з координатами X, Y:
Procedure LineTo (X, Y: Integer);
Ліній від поточної точки до точки із заданими приростами координат DX, DY:
Procedure LineRel (DX, DY: Integer);
Прямокутник із заданими координатами верхнього лівого кута (XI, YI) і нижнього правого кута (Х2, Y2):
Procedure Rectangle (XI, Y1, X2, Y2: Integer);
Коло з центром в то...