скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Модуль Graph в программе Turbo Pascal

Uses Graph;

Procedure GrInit;

Var

GraphDriver: Integer;

GraphMode: Integer;

ErrorCode: Integer;

Begin

GraphDriver: =Detect;

InitGraph (GraphDriver, GraphMode, '');

ErrorCode: =GraphResult;

if ErrorCode <> grOK then

begin

Writeln (‘Ошибка графики: ‘, GraphErrorMsg (ErrorCode));

Writeln(‘Программа остановлена...');

Halt(1);

end;

Begin {Пример инициализации}

GrInit;

Line (0, 0, GetMaxX, GetMaxY);

Readln;

CloseGraph;

End.

В дальнейшем процедуру Grlnit лучше записать в отдельный файл (например, INITGRAF.PAS) и использовать директиву включения этого файла при компиляции. Такой блок всегда включает стандартный графический режим максимального разрешения.

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

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

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

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

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

DetectGraph (VAR GraphDriver, GraphMode: Integer)

Эта процедура может быть вызвана до инициализации графики. Через формальный параметр GraphDriver возвращается значение из первого столбца таблицы указанной выше таблицы, а через параметр GraphMode - обычно последнее значение из соответствующего раздела второго столбца. Эти значения и рекомендуется подставлять в качестве фактических параметров в процедуру InitGraph. После определения GraphDriver автоматически становится доступным диапазон графических режимов, реализуемых адаптером

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

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

GetGraphMode: Integer,

Функция

GetMaxMode: Word

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

GetModeRange (GraphDriver: Integer; VAR LoMode, HiMode: Integer),

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

Функции GetModeName и GetDriverName.

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

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

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

Очистка экрана и переключение режимов

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

ClearDevice

Эта процедура очищает графический экран и устанавливает указатель позиции в (0, 0), а процедура

GraphDefaults кроме очистки экрана устанавливает ряд параметров графической системы:

o     графическое окно становится равным размеру экрана;

o     восстанавливается системная цветовая палитра;

o     переназначаются цвета основных линий и фона экрана;

o     толщина и стиль линий принимаются как по умолчанию;

o     цвет и шаблон заливки геометрических фигур и замкнутых ломаных принимается как по умолчанию;

o     переустанавливается активный шрифт и его стиль.

Процедура GraphDefaults неявно вызывается при инициализации графики и выполняет, no-сути, все стартовые установки графических параметров.

Переключение режимов. Оно осуществляется процедурой SetGraphMode ( GraphMode: Integer)

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

Процедура RestoreCRTMode. При написании некоторых пакетов, использующих и графические, и текстовые режимы работы, может использоваться процедура RestoreCRTMode, которая возвращает систему в текстовый режим, работавший до инициализации графики. Казалось бы, уже есть процедура с подобным действием — CloseGraph. Однако после нее возврат в графический режим должен проводиться через процедуру InitGraph, что довольно сложно. Если же воспользоваться процедурой RestoreCRTMode, то возвращение в графику будет достаточно простым

USES Graph; {подключен модуль Graph}
{$I Initgraf.pas} {процедура инициализации}
CONST {константы - сообщения}
graph_str = ‘Это графический режим';
text_str = 'А это текстовый режим';
graph_ back = 'А это снова графический режим';
BEGIN
Grlnit; {инициализация графики}
Line(0,0,GetMaxX,GetMaxY }; { диагональ экрана}
 OutTextXY(0,100,graph_str); { вывод первого сообщения}
ReadLn; {пауза до нажатия ввода}
RestoreCRTMode; {восстановление текстового режима}
Write{ text_str ); { вывод второго сообщения}
ReadLn; {пауза до нажатия ввода}
SetGraphMode(GetGraphMode); {восстановление графического режима}
 Une(0,0,GetMaxX,GetMaxY); { диагональ экрана }
 OutTextXY(0,100,graph_back); {вывод третьего сообщения}
ReadLn; { пауза до нажатия ввода}
CloseGraph { закрытие графики}
End.

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

Страницы: 1, 2, 3, 4, 5


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.