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

Координаты, графические окна.

Многие процедуры и функции графического режима используют внутренний текущий указатель местоположения на экране, который в отличие от текстового курсора является невидимым. Среди них 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.

ClearViewPort - процедура очистки текущего графического окна.

ClearDevice и ClearViewPort используют для очистки области цвет с номером 0 из текущей палитры, т.е. цвет фона.

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