Лабораторная работа № 10
Тема: Разработка программ с использованием графических построений. Цель: Научиться работать с монитором в графическом режиме, изучить графические возможности среды Pascal. 1. Теоретические сведения. Установка графического режима. Для использования графических возможностей необходимо подключить к программе модуль Graph. Прежде чем использовать графические возможности, необходимо перевести монитор из текстового режима в графический. Это осуществляется процедурой: Procedure InitGraph (Var gd, gm:Integer; Path:String), в которой переменная gd определяет тип графического драйвера, переменная gm – режим работы графического адаптера, константа Path – маршрут поиска файла драйвера. Для автоматического определения типа драйвера можно использовать процедуру Detect: gd: = detect; InitGraph (gd, gm, \C:\Bp\Bgi\); После такого обращения устанавливается графический режим работы экрана, а при выходе из процедуры переменные gd и gm содержат целочисленные значения, определяющие тип драйвера и режим его работы. Процедура Procedure CloseGraph; завершает работу адаптера в графическом режиме и восстанавливает текстовый режим работы экрана. В ходе работы в графическом режиме можно использовать функцию: Function GraphResult: Integer; возвращающюю значение, в котором закодирован результат последнего обращения к графическим процедурам. Для каждого значения в модуле Graph определена константа: Const grOk = 0; {Нет ошибок} grInitGraph = -1; {Не инициализировался графический режим} grNotDetect = -2; {Не определен тип драйвера} grFileNotFind = -3; {Не найден графический драйвер} grInvalidDriver = -4; {Неправильный тип драйвера grNoLoadMem = -5; {Нет памяти для размещения драйвера} grNoScanMem = -6; {Нет памяти для просмотра областей} grNoFloodMem = -7; {Нет памяти для закраски областей} grFontNotFound = -8; {Не найден файл со шрифтом} grNoFontMem = -9; {Нет памяти для размещения шрифта} grInvalidMode = -10 {Неправильный графический режим} grError = -11; {Общая ошибка} grError = -12; {Ошибка ввода-вывода} grInvalidFont = -13; {Неправильный формат шрифта} grInvalidFontNum = -14; {Неправильный номер шрифта}
После обращения к функции GraphResult признак ошибки сбрасывается, поэтому повторное обращение к ней вернет ноль. С помощью функции Function GraphErrorMzg(Code:Integer):String; можно по коду ошибки Code получить текстовое сообщение. Ниже приведена типичная последовательность операторов для инициации графического режима с автоматическим определением типа драйвера: Var gd, gm, Error: Integer; begin gd: = Detect; {Автоопределение драйвера} InitGraph (gd,gm,'C:\Bp\Bgi'); {Инициируем графику} Error: = GraphResult; {Получаем результат} If Not (Error = grOk) then {Проверяем ошибку} Begin {Выводим сообщение об ошибке} Writeln (GraphErrorMsg(Error)); …….. end else {нет ошибки} Begin ….{команда работы с графикой} CloseGraph {Закрывается графический режим} end end.
Координаты. Экран монитора в графическом режиме представляет собой множество точек, изменяя цвет которых можно получить графическое изображение. Каждая точка имеет свои координаты. Т.о., экран в графическом режиме можно рассматривать как координатную плоскость (см. рис.1). Стандартный размер экрана монитора SVGA составляет 640*480 пиксел (точек). Левый верхний угол экрана имеет координаты (0,0). Размерность экрана можно получить с помощью функции типа Integer GetMaxX и GetMaxY, которые возвращают максимальные координаты экрана в текущем режиме работы соответственно по горизонтали (по X) и вертикали (по Y). В графическом режиме, аналогично курсору в текстовом режиме, имеется графический указатель. Его координаты можно получить с помощью функции типа Integer GetX и GetY. Процедура Procedure MoveRel (dX, dY: Integer). Здесь dX, dY – приращение новых координат указателя (соответственно по горизонтали и вертикали) относительно того положения, которое занимал указатель к моменту обращения к процедуре.
Цвета. Процедура Procedure SetColor (Color: Word); устанавливает текущий цвет Color для выводимых линий и символов. В модуле Graph определены точно также те константы для задания цвета, как и в модуле Сrt.
|