- •Тема лекции: «Графический режим среды Turbo Pascal»
- •1. Краткие сведения о графическом режиме
- •Характеристики наиболее распространенных адаптеров
- •2. Подпрограммы для переключения между текстовым и графическим режимами
- •Function GraphErrorMsg(Code : Integer) : String;
- •InitGraph(Driver,Mode,’’);
- •Function GetGraphMode : Integer;
- •Procedure SetGraphMode (Mode : Integer);
- •InitGraph(Driver,Mode,’’);
- •3. Работа с координатами, точками и линиями
- •Function GetMaxX : word;
- •Procedure Rectangle (x1, y1, x2, y2 : Integer);
- •SetTextJustify (Horizontal, Vertical : Word);
- •6. Перевод мировых координат в графические
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;
Для рисования линий используются следующие процедуры:
Процедура Line рисует линию от точки с координатами (x1,y1) к точке (x2,y2).
Procedure Line(x1, y1, x2, y2 : Integer);
Процедура LineTo рисует отрезок из текущей точки к точке с координатами (x, y).
Procedure LineTo(x, y : Integer);
Процедура 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).