Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Grafika_Turbo-Pascal.doc
Скачиваний:
24
Добавлен:
08.03.2015
Размер:
362.5 Кб
Скачать

Дополнительные стандартные подпрограммы для работы в графическом режиме. Анализ графического режима

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

Процедура DetectGraph(var Driver,Mode:integer) определяет значения драйвера и режима, которые потом могут быть переданы в InitGraph. Если графическая аппаратура не найдена будет зафиксирована ошибка графики grNotDetected. После определения DetectGraph становится доступный диапазон графических режимов, поддерживаемых адаптером ПЭВМ, т.о. имея например апаптер VGA можно установить все режимы на платах CGA,EGA и т.д., т.е более "нижние" режимы.

Данную процедуру вызывает процедура InitGraph при инициализации графики. Вызов DetectGraph используется в случае замены выбираемого драйвера.

Пример.

Uses Graph;

Var Driver,Mode:integer;

Begin

DetectGraph(Driver,Mode);

if (Driver=Ega) or (Driver=Vga)

then begin

Driver:=Cga;

Mode:=0

end;

InitGraph(Driver,Mode,'c:\bin\tp\bgi');

Line(0,0,GetMaxX,GetMaxY)

End.

Функция GetDriverName:string определяет имя текущего графического драйвера.

Процедура GetModeRange(Driver, var LoMode,HiMode:integer) определяет минимальное и максимальное значение графического режима для данного устройства.

Пример.

Uses Graph;

Var LoMode,HiMode:integer;

Begin

writeln(' Адаптер минимальный максимальный ');

GetModeRange(Cga,LoMode,HiMode);

writeln(Cga:5,LoMode:10,HiMode:10);

End.

Функция GetGraphMode:integer определяет номер установленного графического режима.

Функция GetMaxMode:word определяет номер максимально возможного графического режима .

Функция GetModeName(ModeNumber:word):string определяет название графического режима, номер которого ModeNumber.

Пример.

Uses Graph;

Var Driver,Mode:integer;

i:integer;

Begin

Driver:=cga; Mode:=0;

InitGraph(Driver,Mode,'');

for i:=1 to GetMaxMode do

{ вывод названий всех графический режимов }

OutTextXY(10,10*Succ(i),GetModeName(i));

readln;

CloseGraph

End.

Процедура GraphDefaults помещает курсор в (0,0) и сбрасывает все графические параметры системы в установленные по умолчанию :

    • окна ( весь экран )

    • палитры ( установленная для текущего графического режима )

    • цвета фона( черный ) и пикселя ( максимальный цвет в палитре)

    • стиля и образца линии ( сплошная линия нормальной толщины)

    • стиля, цвета и образца заполнения ( сплошной шаблон с максимальным цветом в палитре )

    • стиля и выравнивания текста ( вывод текста по горизонтали от текущего указателя)

    • шрифта и размера символов ( стандартные )

Вызов данной процедуры неявно происходит при инициализации графики процедурой InitGraph.

Установки графических окон, страницы

В любой момент работы можно получить установки текущего графического окна процедурой:

GetViewSettings(var Viewport : ViewPortType), которая возвращает координаты текущего окна и установку отсечения в переменной типа ViewPortType, определенного в модуле как:

type

ViewPortType=record { абсолютные }

x1,y1,x2,y2:integer; { координаты окна}

clip:boolean { отсечение }

end;

Пример.

Uses Graph;

Var Driver,Mode:integer;

ViewPort:ViewPortType;

Begin

Driver:= Detect;

InitGraph (Driver, Mode,'c:\bin\tp');

if GraphResult=0 then

begin

GetViewSettings(ViewPort);

with ViewPort do

begin

Rectangle(0,0,x2-x1,y2-y1);

if clip then writeln(' отсечка - да ')

else writeln(' отсечка - нет ')

end

readln;

CloseGraph

end

End.

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

В модуле Graph страничную организацию обеспечивают процедуры:

SetActivPage(N:word) - устанавливает активной страницу с номером N, поэтому весь графический вывод с этого момента будет направлен в нее.

SetVisualPage(N:word) - делает активной страницу с номером N.

Адаптер CGA многостраничный режим работы не поддерживает.

Пример.

Программа выводит в невидимую страницу 0 квадрат, а затем делает ее видимой , а в невидимой 1 рисует окружность и делает уже ее видимой.

Uses Graph;

Var Driver,Mode:integer;

Begin

Driver:= Detect;

InitGraph (Driver, Mode,'c:\bin\tp');

if GraphResult=0 then

begin

SetGraphMode(0);

SetActivePage(1);

Rectangle(0,0,GetMaxX div 2,GetMaxY div 2);

SetVisualPage(1);

SetActivePage(0);

Circle(GetMaxX div 2,GetMaxY div 2,100);

SetVisualPage(0);

readln;

CloseGraph

end

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]