русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Классификация и анализ графических режимов


Дата добавления: 2015-06-12; просмотров: 641; Нарушение авторских прав


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

Таблица 19.4

Драйвер Имя константы режима и ее значение Разрешение экрана (в точках) Палитра Число видеостраниц
CGA CGAC0 = 0 CGAC1 = 1 CGAC2 = 2 CGAC3 = 3 CGAHi = 4 320x200 320x200 320x200 320x200 640x200 4 цвета 4 цвета 4 цвета 4 цвета 2 цвета
MCGA MCGAC0 = 0 MCGAC1 = 1 MCGAC2 = 2 MCGAC3 = 3 MCGAMed=4 MCGAHi = 5 320x200 320x200 320x200 320x200 640x200 640x480 4 цвета 4 цвета 4 цвета 4 цвета 2 цвета 2 цвета
EGA EGALo = 0 EGAHi = 1 640x200 640x350 16 цветов 16 цветов 2 {412}
EGA64 EGA64Lo = 0 EGA64Hi = 1 640x200 640x350 16 цветов 4 цвета
EGAMono EGAMonoHi = 3 640x350 2 цвета 1 (2)
Herc HercMonoHi = 0 720x348 2 цвета
ATT400 ATT400C0 = 0 ATT400C1 = 1 ATT400C2 = 2 ATT400C3 = 3 ATT400C4 = 4 ATT400Hi = 5 320x200 320x200 320x200 320x200 640x200 640x200 4 цвета 4 цвета 4 цвета 4 цвета 2 цвета 2 цвета
VGA VGALo = 0 VGAMed = 1 VGAHi = 2 640x200 640x350 640x480 16 цветов 16 цветов 16 цветов
PC3270 PC3270Hi = 0 720x350 2 цвета
IBM8514 IBM8514Lo = 1 IBM8514 = 1 640x480 1024x768 256 цветов 256 цветов

Как видно из таблицы, наиболее качественная «картинка» получается при использовании адаптера IBM8514. Однако он редко встречается у нас в стране, и поэтому в дальнейшем мы не будем о нем упоминать.



В мире производится огромное количество различных адаптеров, которые являются модификациями основных адаптеров, приведенных в таблице. Каждая модификация решает задачи, связанные, например, с увеличением быстродействия, разрешения или совместимости с каким-нибудь другим типом адаптера. При этом в таком адаптере всегда сохраняется стандартный блок, позволяющий работать в любом из режимов, указанных в таблице для него. Для того чтобы полностью использовать возможности установленного в ПЭВМ адаптера, необходимо воспользоваться инструкцией по работе с ним.

19.2.3.1. Процедура DetectGraph. Для тестирования графического адаптера в модуле Graph объявлена процедура:

DetectGraph( VAR GraphDriver, GraphMode : Integer ) {413}

Эта процедура может быть вызвана до инициализации графики. Через формальный параметр GraphDriver возвращается значение из первого столбца таблицы 19.4, а через параметр GraphMode — обычно последнее значение из соответствующего раздела второго столбца. Эти значения и рекомендуется подставлять в качестве фактических параметров в процедуру InitGraph. Если на ПЭВМ не установлена графическая плата, то функция GraphResult будет возвращать значение grNotDetected. После определения GraphDriver автоматически становится доступным диапазон графических режимов, реализуемых адаптером ПЭВМ. Дело в том, что по мере развития индустрии ПЭВМ возникали новые уровни возможностей графики (рис. 19.2).

┌────────┐ ──────────────────┐

400 │ 16 цветов │ │

│ из 256 │ │

└────────┘ │

640 │

┌────────┐ ────────────┐ │

350 │ 16 цветов │ ││

│ из 64 │ ││

└────────┘ │ │

│ │

640 ││

┌────────┐ │ │

200 │ 16 цветов │ │ │

└────────┘ │ │

│ ├─ VGA

320 ││

┌────────┐ │ │

200 │ 16 цветов │ │ │

└────────┘ ├─ EGA │

│ │

320 ││

┌────────┐ ─────┐ │ │

200 │ 4 цвета │ │ │ │

└────────┘ │ │ │

640 ├─ CGA │ │

┌────────┐ ─────┤ │ │

200 │ 2 цвета │ │ │ │

└────────┘ ─────┘ ───┘ ───┘

Рис. 19.2

Адаптер Hercules несколько отличается от остальных, но тем не менее «перекрывается» старшим уровнем — адаптером VGA. Таким образом, имея адаптер VGA, можно имитировать практически все режимы, возможные на платах EGA, CCA, Hercules и т.д., имея плату {414} EGA, можно то же, кроме режимов VGA. В результате получается так называемая совместимость «снизу вверх». Поясним это на примере (рис. 19.3).

USES Graph; { используется Graph } VAR gDriver : Integer; { для графического адаптера } gMode : Integer; { для графического режима } ErrorCode : Integer; { для кода ошибки } BEGIN DetectGraph(gDriver, gMode); { Опрос наличия и } ErrorCode := GraphResult; { типа адаптера. } if ErrorCode <> grOk then begin { если ошибка, то... } WriteLn(GraphErrorMsg( ErrorCode )); Halt( 1 ) end; {if} if gDriver in [EGA, EGA64, VGA] { Если адаптер } then begin { "старше" CGA, то } gDriver := CGA; { возможен режим } gMode := CGACO { работы CGA. } end; {if} InitGraph(gDriver,gMode, ); { режим CGA } Line( 0, 0, 319, 199 ); { работа как на CGA } CloseGraph { закрытие графики } END.

Рис. 19.3

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

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

GetGraphMode : Integer,

а функция

GetMaxMode : Word

возвращает номер максимального режима для графического адаптера; таким образом, каждый драйвер поддерживает диапазон режимов 0..GetMaxMode. Обычно этот же результат можно получить из процедуры {415}

GetModeRange( GraphDriver : Integer;

VAR LoMode, HiMode : Integer ),

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

19.2.3.3. Функции GetModeName и GetDriverName. Есть еще одна функция, которая может быть полезна для организации диалогового управления графическими режимами:

GetModeName( GraphMode : Word ) : String

Она возвращает строку, в которой содержится последовательно через пробелы разрешение, имя константы и иногда название палитры из табл. 19.4, например, '640x200 CGA'. Представленный пример (рис. 19.4) поможет определить, в каких графических режимах может работать используемая ПЭВМ.

USES Graph; { подключен модуль Graph } {$I initgraf.pas} { процедура инициализации } VAR mode : Integer; BEGIN GrInit; { инициализация } for mode := 0 to GetMaxMode do { показ всех режимов } OutTextXY( 10, 10+mode*10, GetModeName( mode ) ); ReadLn; { пауза до нажатия... } CloseGraph { закрытие графики } END.

Рис. 19.4

Функция

GetDriverName : String

позволяет получить имя используемого драйвера. Ее применение обосновано только в том случае, если в процедуре InitGraph переменная GraphDriver определена, как Detect (рис. 19.5).



<== предыдущая лекция | следующая лекция ==>
Обработка ошибок инициализации | Очистка экрана и переключение режимов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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