Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция по графическому режиму.doc
Скачиваний:
5
Добавлен:
21.02.2016
Размер:
115.2 Кб
Скачать

Function GraphErrorMsg(Code : Integer) : String;

Например,

Uses Graph;

Var

Driver, Mode, Error : Integer;

Begin

Driver := Detect;

InitGraph(Driver,Mode,’’);

Error := GraphResult;

If (Error <> grOK) then

Begin

Writeln(’Ошибка: ’,GraphErrorMsg(Error));

End

else

End.

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

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

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

Function GetGraphMode : Integer;

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

Procedure SetGraphMode (Mode : Integer);

Например,

Uses Graph;

Var

Driver, Mode, Error : Integer;

Begin

Driver := Detect;

InitGraph(Driver,Mode,’’);

Error := GraphResult;

If (Error <> grOK) then

Begin

Writeln(’Ошибка: ’,GraphErrorMsg(Error));

End

Else

Begin

Writeln(’Графический режим’);

Readln;

RestoreCRTMode;

Writeln(’Текстовый режим ’);

Readln;

SetGraphMode(GetGraphMode);

Writeln(’Графический режим’);

Readln;

CloseGraph;

End;

End.

3. Работа с координатами, точками и линиями

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

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

Координаты этого указателя и любого пиксела задается относительно левого верхнего угла, который имеет координаты (0,0).

Таким образом, горизонтальная координата экрана увеличивается слева направо, а вертикальная сверху вниз.

Функции GetMaxX и GetMaxY возвращают максимальные координаты экрана в текущем режиме работы:

Function GetMaxX : word;

Function GetMaxY : word;

Функции GetX и GetY возвращают координаты указателя по горизонтали и вертикали. Координаты определяются относительно левого верхнего угла окна или, если окно не установлено, экрана:

Function GetX : Integer;

Function GetY : Integer;

Для перемещения курсора используются следующие процедуры:

MoveTo(x,y:Integer) – перемещает курсор в точку экрана с координатами (x,y);

MoveRel(dx,dy:Integer) – перемещает курсор на dx пикселов по горизонтали и соответственно на dy по вертикали относительно последнего положения курсора.

Для задания пикселу с координатами (x, y) цвета Color используется процедура PutPixel:

Procedure PutPixel (x, y : Integer; Color : Word);

Функция GetPixel возвращает цвет пиксела с координатами (x,y):

GetPixel (x, y : Integer) : Word;

Для рисования линий используются следующие процедуры:

  1. Процедура Line рисует линию от точки с координатами (x1,y1) к точке (x2,y2).

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

  1. Процедура LineTo рисует отрезок из текущей точки к точке с координатами (x, y).

Procedure LineTo(x, y : Integer);

  1. Процедура LineRel рисует отрезок относительно текущей точки. Положение текущего указателя принимается за начало «временных» координат (0, 0) и указывается местоположение конца отрезка.

Procedure LineRel(dx, dy : Integer);

Для установки стиля линий используется процедура SetLineStyle:

Procedure SetLineStyle(LineStyle, Pattern, Thickness : Word);

Параметр LineStyle задает тип линии. В модуле graph предусмотрены следующие константы:

Const

{для значений стиля линии}

SolidLn = 0; {сплошная}

DottedLn = 1; {точечная}

CenterLn = 2; {штрихпунктирная}

DashedLn = 3; {пунктирная}

UserBitLn = 4; {тип линии задан явно шаблоном}

Параметр Pattern учитывается только для линий, тип которых задает пользователь. При этом два байта параметра определяют внешний вид линии: каждый установленный бит соответствует светящемуся пикселу линии, нулевой бит – несветящемуся пикселу.

Параметр Thickness может принимать два значения:

NormWidth = 1; {толщина в один пиксел}

ThickWidth = 3; {толщина в 3 пиксела}

Для построения прямоугольника достаточно вызвать процедуру Rectangle, которая изобразит на экране прямоугольник с диагональю (x1, y1) – (x2, y2).