Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Переход в графический режим и обратно




 

После включения ПК к моменту запуска программы из среды Паскаля со­стояние ПК соответствует работе экрана в текстовом режиме. Программа, кото­рая использует графические средства ПК, должна инициировать графический режим работы адаптера с помощью INITGRAPH - процедуры модуля GRAPH. По завершении выполнения программы в графическом режиме ПК надо возвратить в текстовый режим с помощью процедуры CLOSEGRAPH.

Процедура INITGRAPH инициирует графическую систему и графический ре­жим аппаратуры. Формат обращения к процедуре INITGRAPH: INITGRAPH (драйвер, режим, путь);

где драйвер - параметр-переменная типа INTEGER, определяющая тип графиче­ского драйвера и адаптера;

режим — параметр-переменная типа INTEGER, определяющая режим работы графического адаптера;

путь - выражение типа STRING, содержащее путь (маршрут) к каталогу, в котором находятся графические драйверы; по умолчанию (если параметр -пустая строка) подразумевается, что драйверы находятся в текущем каталоге. Если параметр драйвер равен нулю (Detect), то при выполнении процедуры INITGRAPH вызывается процедура DetectGraph, загружается соответствующий драйвер и выбирается графический режим, т. е. параметр режим получит соот­ветствующее значение. Если первый параметр не равен нулю, то значение этого параметра рассматривается как номер драйвера, который и загружается.

Для указания типа драйвера в модуле GRAPH предопределен ряд констант. Например:

CONST Detect =0; { Режим автоопределения типа драйвера } CGA = 1; MCGA = 2; EGA = 3;... VGA = 9;

Автоматическое определение типа драйвера и адаптера используется, если тип адаптера неизвестен или если программа рассчитана на работу с любым адапте­ром. Например:

VAR Ga, Gm: INTEGER;

... Ga:= Detect; INITGRAPH (Ga, Gm, ");

INITGRAPH (Ga, Gm, 'D:\BP\BGI1);

где Ga - тип драйвера;

Gm - тип режима, результат, возвращаемый INITGRAPH.

Большинство адаптеров могут работать в различных режимах. Чтобы указать адаптеру требуемый режим работы, используется переменная режим, значением которой может быть одна из предопределенных констант, определяющих коли­чество пикселей на странице (экране) и палитру. Примеры констант режима ра­боты адаптера:

CONST CGACO = 0; { 320 х 200, 1 страница, 4 цвета, палитра 0:

черный, ярко-зеленый, ярко-красный, желтый } CGAC1 = 1; { 320 х 200, 1 страница, 4 цвета, палитра 1:

черный, ярко-голубой, малиновый, белый }

EGALo = 0; { 640 х 200, 4 страницы, 16 цветов }

EGAHi =1; { 640 х 350, 2 страницы, 16 цветов }

VGALo = 0; { 640 х 200, 4 страницы, 16 цветов }

VGAMed =1; { 640 х 350, 2 страницы, 16 цветов }

VGAHi = 2; { 640 х 480, 1 страница, 16 цветов }

РС3270Н1 =5; { 720 х 350, 1 страница, 1 цвет }

IBM8514LO = 0; { 640 х 480, 256 цветов)

IBM8514H1 = 1; { 1024х 768, 256 цветов }

Функция GraphResult возвращает значение типа INTEGER, в котором содер­жится код ошибки (успешности) выполнения инициализации графического ре­жима с помощью процедуры INITGRAPH. Значение GraphResult = 0 (или GrOk) определяет успешную инициализацию графического режима. После обращения к функции GraphResult значение кода ошибки сбрасывается. Для многократного использования его надо переслать в переменную целого типа.

После обращения к процедуре INITGRAPH необходим анализ успеха инициа­лизации. Процедуры и функции графического режима надо выполнять только в случае значения GraphResult = 0.

Функция GraphErrorMsg возвращает значение типа String, в котором по ука­занному коду ошибки выдается соответствующее текстовое сообщение об ошиб­ке. Формат обращения: GraphErrorMsg (код);

где код - переменная типа Integer, содержащая значение кода ошибки, опре­деленное с помощью функции GraphResult.

Например, с помощью операторов:

Error:= GraphResult;

Writeln (GraphErrorMsg (Error)); - можно отпечатать: 'Device driver not found' (не найден драйвер устройства) вместо: 'error code -3' (код ошибки-3),-без этих операторов.

Чаще всего причиной ошибки при обращении к процедуре INITGRAPH являет­ся неправильное указание места файла graph.tpu, содержащего библиотеку графических подпрограмм, или файла с драйвером графического адаптера, на­пример файла egavga.bgi для адаптера VGA. Настройку на местоположение драйвера можно выполнить, указав путь в качестве фактического параметра процедуры INITGRAPH или разместив драйвер в текущей директории. Чтобы компилятор Паскаля нашел эти файлы, надо соответствующим образом настро­ить среду Паскаля. Для этого в режиме Options\Directories\Unit directories надо указать каталог, в котором размещены эти файлы. Например: D:\BP\UNITS;D:\BP\BGI

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

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 433; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.