Графический режим Инициализация графического режима. Построение точки, линии.
Определение драйвера Драйвер - это специальная программа, которая управляет техническими средствами компьютера. В Borland Pascal графические драйверы имеют расширение.bgi и находятся на диске в одноименном подкаталоге (BGI).
Инициализация графики Необходимые процедуры и функции для работы с графикой собраны стандартном модуле – Graph; Инициализация графики производится с помощью процедуры InitGraph, которая имеет вид: InitGraph(GraphDriver, GraphMode, Path);,где переменные GraphDriver и GraphMode имеют тип Integer, а переменная Path имеет тип String.
Переменная GraphDriver GraphDriver - целая переменная, определяющая тип драйвера. Для указания типа драйвера в модуле предопределены следующие константы:
Переменная GraphMode Целая переменная GraphMode задает режим работы графического адаптера. Многие адаптеры могут работать в нескольких режимах. Например, переменная GraphMode в момент обращения к InitGraph может иметь одно из следующих значений для адаптера VGA: VGALo = 0; VGAMed = 1; VGAHi = 2;
Автоматическое определение видео-адаптера Если нам неизвестен тип адаптера или программа должна работать с любым адаптером, необходимо обращаться к InitGraph с запросом на автоматическое определение драйвера. Это происходит следующим образом: переменной GraphDriver присваиваем значение detect. В этом случае компьютер сам определит необходимый драйвер и подберет наилучший режим.
Шаблон программы с графикой Program Primer1; Uses Graph;{Подключение модуля библиотеки графических процедур} Var GraphDriver, GraphMode : integer; Begin GraphDriver := detect; {автоопределение типа драйвера } InitGraph(GraphDriver, GraphMode, Path); {Инициализация графического режима} СloseGraph;{Закрытие графического режима} End.
Модуль GRAPH Чтобы облегчить труд программиста существует модуль Graph, в котором содержиться 79 полезных процедур и функций, десятки стандартных констант и типов данных (например, процедуры рисования линии, окружности и др.). Чтобы воспользоваться этим модулем нужно сначала его подключить. Для этого в программе записывают строчку: Uses Graph.
1) Инициализация графики, подготовительные работы, управление цветом, закрытие режима:
2) Процедуры и функции для управления курсором и видеостраницами:
3). Процедуры и функции для работы с "графическими примитивами":
4) Процедуры для работы с текстом
Алгоритм запуска графической системы Подключить модуль GRAPH - библиотеку графических процедур: Uses Graph; Установить графический режим с помощью двух переменных: GraphDriver GraphMode GraphDriver и GraphMode
Шаблон для программы Uses Graph; Var GraphDriver, GraphMode: integer; Begin GraphDriver:=detect; InitGraph(GraphDriver, GraphMode, '..\BGI'); {С этого момента все графические средства доступны пользователю} { тело программы } CloseGraph; End. Наберите шаблон для программы, работающей в графическом режиме. Нам он понадобиться в дальнейшем.
Система координат в графическом режиме Любая информация при работе в графическом режиме на экране монитора представлена совокупностью светящихся точек - пикселей, которые определяются цветом и координатами - положением относительно левого верхнего угла экрана с координатами (0,0). Чтобы узнать максимальные координаты экрана в текущем режиме работы, воспользуемся стандартными функциями GetMaxX и GetMaxY.
Программа определения максимальных координат экрана Uses Graph; Var GraphDriver, GraphMode: integer; Begin GraphDriver:=detect; InitGraph(GraphDriver, GraphMode,..\BGI); Writeln(Разрешение экрана: ',GetMaxX, 'x', GetMaxY); Readln; CloseGraph; End.
Система координат графического режима Отсчет начинается с верхнего левого угла с координатами (0;0), значение Х - столбец, отсчет слева направо; значение Y - строка, отсчет сверху вниз.
Работа с Current Pointer MoveTo (X, Y), где переменные X, Y типа Integer - перемещает текущий указатель в точку с координатами (X,Y). MoveRel (dX, dY), где переменные dX, dY типа Integer - перемещает текущий указатель по горизонтали на расстояние, равное dX пикселям, а по вертикали на расстояние, равное dY пикселям. PutPixel(X, Y, Color), где переменные X, Y типа Integer, а Color типа Word - процедура выводит точку заданного цвета Color в точку с координатами (X, Y). Задание. Наберите в теле программы следующие процедуры PutPixel(300, 150, Red), PutPixel(45, 420, 9) и просмотрите их действие.
Таблица цветов Таблица цветов
Операции с линиями Line (X1, Y1, X2, Y2), где переменные X1, Y1, X2, Y2 типа Integer - рисуется линия от точки (X1, Y1) до точки (X2, Y2). LineTo (X, Y), где переменные X, Y типа Integer - рисуется линия из точки, где находится в данный момент курсор в точку (X, Y). LineRel (dX,dY), где переменные dX, dY типа Integer - рисуется линия из точки, где находится в данный момент курсор (X, Y) в точку (X+dX,Y+dY). Задание. Придумайте самостоятельно примеры с использованием всех процедур вычерчивания линий.
Цветные линии В чем же причина? Если внимательно посмотреть на эти процедуры и сравнить их с процедурой PutPixel, то можно заметить, что в них нет параметра, указывающего цвет рисования линии. В этом и других аналогичных случаях цвет задается специальной процедурой. SetColor (Color), где переменная Color типа Word - устанавливает текущий цвет для выводимых линий и символов.
Задания 1. Исправьте свою программу так, чтобы процедуры рисовали линии различных цветов. 2. В начерченной ранее системе координат (в тетради) изобразите на чертеже точки: А(150,450), В(100,350), С(350,350), D(300,450), E(150,450), F(213,50), L(250,40), K(200,20), M(300,250), X(200,350). 3. Соедините точки, получая отрезки: AB, BC, CD, DE. Затем соедините точки FL, LK, KM, MX, XK. Какая фигура у Вас получилась? 4. Напишите программу, рисующую эту фигуру, по вашему рисунку.