Многие процедуры и функции графического режима используют внутренний текущий указатель местоположения на экране, который в отличие от текстового курсора является невидимым. Среди них MoveRel, MoveTo, LineTo, LineRel, InitGraph, SetGraphMode, ClearDevice, SetViewPort, ClearViewPort.
В текстовом режиме работы курсор находится за последним выведенным символом и указывает место вывода следующего. В графическом режиме текущий указатель определяет начальные координаты изображения графического объекта, выводимого от текущего положения. Определение местоположения текущего указателя происходит корректно даже если вывод производился за пределы координатного окна.
Процедурой MoveToX,Y:integer) пользователь может задать новое местоположение текущего указателя с абсолютными координатами X и Y, а процедурой MoveRel(X,Y:integer) c относительными X,Y, т.е. смещение относительно текущего местоположения.
Функции GetMaxX и GetMaxY типа integer возвращают максимальные координаты экрана соответственно по горизонтали и вертикали текущего графического режима.
Функции GetX и GetY типа integer возвращают текущие координаты указателя соответственно по горизонтали и вертикали относительно верхнего левого угла окна. Если окно не установлено, то относительно экрана.
SetViewPort(X1,Y1,X2,Y2:integer; Clip:boolean) - процедура установки прямоугольного окна в графическом режиме с координатами верхнего левого угла (X1,Y1) и правого нижнего (X2,Y2). Координаты верхнего левого угла текущего окна равны (0,0), текущий указатель помещается в эту точку. Булевская переменная Clip определяет будут отсекаться изображения на границе окна или нет. Для определения Clip существуют константы:
const ClipOn=true;
ClipOff=false;
Значение true устанавливает отсечение на границе окна, false не производит отсечения. Текущий указатель никогда не отсекается. Все графические процедуры будут действовать относительно установленного окна.
<Пример>.
Uses Graph;
Var Driver,Mode,Error:integer;
Begin
Driver:= Detect;
InitGraph (Driver, Mode,'');
Error:= GraphResult;
If Error <>0
then writeln('ошибка:',GraphErrorMsg(Error))
else
begin
OutTextXY(1,10,' ClipOn ClipOff');
Rectangle(0,40,120,150);
SetViewPort(0,40,120,150,ClipOn);
Circle(60,50,65); {часть окружности отсекается }
{ текущее окно - экран }
SetViewPort(0,0,GetMaxX,GetMaxY,clipOff);
Rectangle(200,40,310,150);
SetViewPort(200,40,310,150,ClipOff);
Circle(60,50,65); { окружность не отсекается }
readln; { и выходит за пределы окна }
CloseGraph
end
End.
ClearDevice - процедура очистки графического экрана. При этом указатель помещается в точку (0,0), все параметры приобретают значения по умолчанию, как и при инициализации графики процедурой InitGraph.