Графика в паскале

Автор: Пользователь скрыл имя, 24 Февраля 2012 в 16:35, реферат

Описание работы

Графические функции паскаля описаны в модуле GRAPH. Модуль подключается к программе с помощью ключевого слова USES.

Работа содержит 1 файл

Графика в паскале.doc

— 55.00 Кб (Скачать)


Графика в паскале.

Графические функции паскаля описаны в модуле GRAPH. Модуль подключается к программе с помощью ключевого слова USES.

Пример:

program t34;

Uses graph;

Var ...

...

Основные процедуры и функции модуля GRAPH.

Процедура InitGraph инициирует перевод видеоадаптера в видеорежим. Общий вид:

InitGraph(Driver,Mode,Path);

Driver - параметр, определяющий графический драйвер; 0 - автоопределение,9 - VGA.

Mode - параметр, задающий один из графических режимов. Для VGA 0 - 640X200 16 цветов, 1- 640Х350 16 цветов, 2 - 640Х480 16 цветов. Если стоит автоопределение, то параметр Mode надо задавать, выбор будет сделан в пользу максимально возможного из режимов.

Path - имя файла и путь графического драйвера. Указывать надо только путь. Обычно в Паскале используется egavga.bgi. Он расположен в каталоге(например): D:\tp7\BGI\

Пример:

InitGraph(9,2,'d:\tp7\bgi\') ;

 

Замечание редактора: указанный пример не будет работать, так как первые два аргумента у процедуры InitGraph - параметры-переменные. То есть, числа 9 и 2 надо поместить в переменные типа Integer, и имена этих переменных ставить в качестве первых двух аргументов:

var gd,gm: integer

.........

gd:=9;

gm:=2;

InitGraph (gd,gm,'d:\tp7\bgi\');

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

Общий вид:

DetectGraph (Driver,Mode);

Driver - параметр, определяющий подходящий тип графического драйвера.

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

Пример

USES GRAPH

VAR D,M:INTEGER;

BEGIN

DetectGraph(D,M);

Write('Тип графического адаптера: ',D,'Графический режим: ',M);

END.

Если видеоадаптер не был найден, то переменная Driver вернет значение -2.

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

Общий вид:

GrapgResult;

Пример

USES GRAPH

VAR H,k,l: INTEGER;

BEGIN

DetectGrahp(k,l);

InitGraph(k,l,'d:\tp7\bgi\');

H:=GraphResult;

If h=0 then write('OK') elseWrite('Error');

END.

Значения возвращаемые GraphResult:

0 - без ошибок

-1 - не инициализирован граф. режим

-2 - не удалось определить тип адаптера

-3 - не обнаружен файл с драйвером

-4 - Обнаруженный файл не содержит соответствующего драйвера

-5 - недостаточно памяти для загрузки драйвера

-6 - недостаточно памяти для просмотра областей

-7 - недостаточно памяти для заполнения областей

-8 - не обнаружен файл со шрифтом

-9 - недостаточно памяти для загрузки шрифта

-10 - недопустимый режим для выбранного драйвера

-11 - общая ошибка

-12 - ошибка ввода-вывода

-13 - неверный формат шрифта

-14 - неверный номер шрифта

Функция GraphErrorMsg - возвращает текст, по-английски, сообщения об ошибке.

Пример.

...

GraphResult(i);

GraphErrorMsg(i);

...

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

Пример.

...

RestoreCrtMode:

...

Процедура SetGraphMode - устанавливает для используемого драйвера новый графический режим и очищает экран. Переходит в один из доступных режимов для данного драйвера (в отличие от InitGraph). Общий вид:

SetGraphMode(Mode);

Mode - целое число от 0 до 5, определяющее режим. С помощью SetGraphMode можно переходить в другой графический режим, отличный от используемого. Совместно с процедурой RestoreCrtMode может использоваться, чтобы временно и быстро переходить из графического в текстовый режим и обратно.

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

Функция GetGraphMode - возвращает числовой код используемого в данный момент графического режима. Для VGA это 0,1 или 2.

Пример

...

Var I: integer;

...

I:=GetGraphMode;:

...

Функция GetModeName - возвращает строку с именем используемого графического режима.

Пример.

...

Var I: integer;

...

I:=GetGraphMode;

Write('Графический режим: ',GetModeName(i));

...

Функция GetDriverName - возвращает имя (без расширения) используемого в данный момент драйвера.

Пример.

...

Var I:string;

...

I:=GetDriverName;

Write('Драйвер: ',i);

...

или

...

Write('Драйвер', GetDriverName);

...

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

Пример.

USES GRAPH;

VAR I:INTEGER;

BEGIN

INITGRAPH(0,0,'');(*ИЩЕМ ДРАЙВЕР В КАТАЛОГЕ С ПРОГРАММОЙ*)

(*ред.:этот пример опять не работоспособен*)

I:=GetMaxMode;

...

END.

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

Общий вид:

GetModeRange(Driver,MinMode,MaxMode);

Driver - код графического драйвера, MinMode - код <минимального> режима, MaxMode - код предельно допустимого режима для данного драйвера.

Пример.

...

Var minmod,maxmod:integer;

...

GetModeRange(9,minmod,maxmod);

Write('Минимальный режим: ',minmode,'Предельный режим: ',maxmode);

...

Процедура CloseGraph - Восстанавливает видеорежим (текстовый), использовавшийся до перехода в графический режим, освобождает память от графических буферов и драйвера.

Пример.

...

InitGraph(0,0,''); (*ред.: опять неработоспособный пример*)

CloseGraph;

...

Работа с изображениями.

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

Определение. Тип Word - целое число от 0 до 65535.

Процедура SetColor - устанавливает текущий цвет, взятый из палитры.

Общий вид:

SetColor(Color);

Color имеет тип word; Пример:

...

SetColor(2);

...

SetColor(RED);

...

Таблица цветов. 0 - Black

1 - Blue

2 - Green

3 - Cyan - бирюзовый

4 - Red

5 - Magenta - фиолетовый

6 - Brown

7 - LightGray - светло-серый

8 - DarkGray - темно-серый

9 - LightBlue

10 - LightGreen

11 - LightCyan

12 - LightRed

13 - LightMagenta

14 - Yellow

15 - White

128 - Blink - мерцание

Функция GetColor - возвращает код текущего цвета - значение типа Word.

Пример.

...

Var I:word;

...

I:=GetColor;

...

Функция GetMaxColor - возвращает наибольший код цвета, значение типа Word, который может быть передан процедуре SetColor в качестве параметра.

Процедура SetBkColor - устанавливает цвет фона из палитры. Устанавливается для всего экрана.

Общий вид:

SetBkColor(Color); Color - Значение типа Word -

новый цвет фона.

Пример.

SetBkColor(RED);

или

SetBkColor(4);

Функция GetBkColor - возвращает значение типа Word - код используемого фона.

Процедура SetRGBPalette - изменяет компоненты палитры при использовании драйверов VGA и IBM 8514.

Общий вид:

SetRGBPalette(ColNum,RedVal, GreenVal, BlueVal);

ColNum - код цвета из палитры.

RedVal, GreenVal, BlueVal - определяют интенсивность соответственно красной, зеленой и синей составляющей для цвета с номером ColNum. ColNum,RedVal, GreenVal, BlueVal - значения типа Integer.

Для драйвера IBM 8514 ColNum может изменяться в пределах от 0 до 255, для VGA от 0 до 15.

Процедура SetFillStyle - определяет шаблон и цвет заполнения.

Общий вид:

SetFillStyle(Pattern,Color);

Pattern - шаблон заполнения, Color - цвет заполнения

Шаблоны заполнения:

Константа код заполнение

EmptyFill 0 Сплошное заполнение цветом фона(без узора)

SolidFill 1 Сплошное заполнение текущим цветом, который устанавливается процедурой SetColor.

LineFill 2

LtSlashFill 3

SlashFill 4

BkSlashFill 5

LtBkSlashFill 6

HatchFill 7

XhatchFill 8

InterleaveFill 9

WideDotFill 10

CloseDotFill 11

UserFill 12 Шаблон заполнения,определенный пользователем.

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

Функции GetX и GetY - возвращают координаты по горизонтали (Х) и вертикали (Y) указателя текущей позиции. Координаты GetX и GetY отсчитываются от левого верхнего угла экрана (активного окна), начиная с нуля.

Пример.

...

Var x,y: integer;

...

x:=GetX;

y:=GetY;

...

Функции GetMaxX и GetMaxY - возвращают текущие значения (типа Integer) разрешения, т.е. количество точек (пикселей) по осям Х и Y, эти значения зависят от выбранного драйвера и разрешения.

Процедура MoveTo - перемещает указатель текущей позиции в точку с заданными координатами.

Общий вид:

MoveTo(x,y);

x и y - координаты точки на экране, куда будет перемещен указатель.

Пример.

...

MoveTo(10,30);

...

Процедура MoveRel - перемещает указатель на заданное расстояние, определяемое приращением координат Х и Y, относительно его текущего местоположения.

Общий вид:

MoveRel(Dx,Dy);

Пример, пусть указатель находится в точке (10,44).

...

MoveRel(5,8);(*переместит указатель в точку (15,52)*)

...

MoveRel(-10,-2):(*переместит указатель из тоски (15,52) в точку (5,50)*)

...

Процедура Line - отображает прямую линию между двумя точками, координаты которых заданы в качестве параметров.

Общий вид:

Line(x1,y1,x2,y2);

x1,x2,y1,y2 имеют тип Integer.

Пример.

Var x1,x2,y1,y2: integer;

...

Line(0,0,50,67)

...x1:=56;y1:=78;x2:=1,y2:=100;

Line(x1,y1,x2,y2);:

...

Процедура LineTo - проводит прямую от текущего положения указателя до точки заданной координатами.

Общий вид:

LineTo(X,Y);

X иY - координаты точки.

Процедура LineRel - отображает прямую от текущей позиции и до точки, координаты которой получены приращением по Х и У.

Общий вид:

LineRel(Dx,Dy);

Dx,Dy - приращения по Х и Y,имеют тип Integer.

Пример, пусть указатель находится в точке (45,17).

...

LineRel(40,40);(*проведет прямую из точки с координатами (45,17)

до точки с координатами (85,57)*)

...

Функция GetPixel - возвращает значение типа Word, соответствующее цвету пикселя, координаты которого (X,Y).

Общий вид:

GetPixel(X,Y);

Пример.

...

Var I:Word;

...

I:=GetPixel(45,45);

...

Процедура PutPixel - отображает точку в заданной позиции и заданным цветом

Общий вид:

PutPixel(x,y,color);

X,Y - координаты точки (типа Integer), Color - ее цвет (типа Word).

Пример.

...

PutPixel(23,45,4);

...

Процедура Circle - вычерчивает окружность.

Общий вид:

Circle(x,y,Rad);

X,Y - координата точки, Rad - радиус окружности в пикселях по горизонтали.

Пример:

...

Circle(45,67,50);

...

Процедура Ellipse - вычерчивает эллипс.

Общий вид:

Ellipse(X,Y,BAngle,Eangle,XRad,YRad);

X,Y - координаты центра, Bangle и Eangle - начальный и конечный углы дуги (в радианах!), XRad,Yrad - горизонтальный и вертикальных радиус эллипса.

Пример.

...

Ellipse(200,200,50,56,30,20);

...



Информация о работе Графика в паскале