Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование - 12 - Графика.doc
Скачиваний:
10
Добавлен:
09.03.2016
Размер:
410.11 Кб
Скачать

12 Графические возможности языка Паскаль

Модуль Graphсодержит типы, константы, переменные и подпрограммы, позволяющие создаватьизображенияс использованием широкого набора графических адаптеров.

При работе с этими адаптерами весь экран разбивается на отдельные «точки» — пиксели, которые можно закрасить в тот или иной цвет. Каждый пиксель имеет две координаты:XиY. КоординатаXувеличиваетсяпо горизонтали слева направо, начиная от 0, координатаYувеличивается по вертикали сверху вниз— также от 0, т.е. левый верхний пиксель имеет координаты (0,0). Количество пикселей зависит оттипа адаптераирежимаегоработы.

Для формирования изображений выделяется одна или несколько (до 4) страниц видеопамяти. В каждый момент времени лишь одна из них является видимой, передающей изображение на экран дисплея, и одна являетсяактивной— на ней можно формировать изображение. Видимая и активная страницымогут не совпадать, поэтому можно, например, сначала подготовить изображение на активной (но невидимой) странице, а затем вывести его на экран.

Так же как и в текстовом режиме (модуль CRT), модульGraphпозволяет выделять окна на экране дисплея. Графические процедуры и функции в этом случае используют координаты в пределах окна, причем левый верхний угол окна получает координаты (0,0).

В отличие от текстового режима в графическом режиме курсор, определяющий место на экране, с которого начинается изображение фигуры или текста,невидим, однако его можно переместить в любую точку окна экрана, посмотреть значения координат курсора и т.д.

12.1 Управление графическим режимом

12.1.1 Процедуры управления графическим режимом

Procedure ...

InitGraph ( var Driver, Mode : Integer ; Path : String ) ;

инициализирует графическуюсистему, устанавливает графический режим, устанавливает исходные значения текущего указателя, палитры, цвета и т.д.

Driver

переменная, в которую необходимо записать код требуемого графического драйвера или Detect = 0, если требуется автоматическое определение драйвера.

Mode

переменная, в которую процедура помещает код графического режима для данного драйвера (максимально возможный, если не указать иное).

Path

строка, содержащая путь к драйверу — если строка пустая, считается, что драйвер находится в текущем каталоге (папке).

Если Driver = Detect, то выполняется вызов процедурыDetectGraph(см. ниже), загружается определенный этой процедурой драйвер и устанавливается определенный ею режим.

В случае аварийной ситуации процедура устанавливает один из следующих кодов ошибки: -2, -3, -4, -5, -10 (см. ниже функцию GraphResult).

Closegraph;

завершает работу в графическом режиме и осуществляет переход в текстовый режим работы экрана.

Пример 12.1(инициализация графики с автоматическим определением драйвера и максимально возможного режима для него … выход из графического режима):

Uses Graph ;

Var

Driver, Mode : Integer ;

Begin

Driver := Detect ;

InitGraph ( Driver, Mode, ’’ ) ;

. . .

CloseGraph

End.

DetectGraph ( var Driver, Mode : Integer ) ;

проверяет наличие соответствующего оборудования и определяет, какой графический драйвер и максимально возможный режим его работы можно использовать, возвращает эти значения в качестве параметров вызвавшей ее процедуре InitGraph

(единственной причиной непосредственного вызова процедуры DetectGraphявляется последующая замена выбираемого ею драйвера).

Driver

переменная, в которую процедура помещает код требуемого графического драйвера.

Mode

переменная, в которую процедура помещает код графического режима или -2 в случае аварийной ситуации.

В случае аварийной ситуации (у компьютера нет графического адаптера или нет драйвера для него) процедура устанавливает код ошибки: -2 (см. GraphResult).

Пример 12.2(в случае идентификации драйвераVGAзагружается другой драйвер —EGA64и режимEGA64HIдля него):

. . .

Driver := Detect ;

DetectGraph ( Driver, Mode ) ;

If Driver = VGA then

Begin

Driver := EGA64 ;

Mode := EGA64HI

End ;

InitGraph ( Driver, Mode , C:\BIN ) ;

. . .

SetGraphMode ( Mode : Integer );

задает новый графический режим для выбранного драйвера, устанавливает исходные значения текущего указателя, палитры, цвета и т.д., очищает экран.

Mode

графический режим.

В случае аварийной ситуации процедура устанавливает код ошибки: -10

(см. GraphResult).

GetModeRange ( Driver : Integer, var LoMode, HiMode : Integer ) ;

возвращает минимальный и максимальный номера графических режимов указанного драйвера.

Driver

код драйвера.

LoMode

переменная, в которую записывается минимальный номер режима.

HiMode

переменная, в которую записывается максимальный номер режима.

Если Driverзадан неверно, параметрыLoModeиHiModeполучают значение: -1.

GraphDefaults ;

сбрасывает заданные пользователем параметры графического режима и устанавливает исходные (определяемые при запуске процедуры InitGraph).

RestoreCRTMode;

производит кратковременный возврат в текстовый режим.