Иллюстрированный самоучитель по Turbo Pascal

Координаты, окна, страницы

Uses Graph,CRT;
var
x,y,e: Integer;
x11,y11,x12,y12, {Координаты 1-го окна}
x21,x22, {Левый верхний угол 2-го}
R, {Начальный радиус}
k: Integer;
begin
DirectVideo: = False {Блокируем прямой доступ к видеопамяти в модуле CRT}
{Инициируем графический режим}
х: = Detect; InitGraph(x, у, '');
{Проверяем результат}
е: = GraphResult; if e <> grOk then
WriteLn(GraphErrorMsg (e)) {Ошибка}
else
begin {Нет ошибки}
{Вычисляем координаты с учетом разрешения экрана}
x11: = GetMaxX div 60;
x12: = GetMaxX div 3;
y11: = GetMaxY div 4; y12: = 2*y11;
R: = (x12-x11) div 4; x21: = x12*2;
x22: = x21+x12-x11;
{Рисуем окна}
WriteLnt'ClipOn:':10,'ClipOff:':40);
Rectangle(x11, y11, x12, y12); Rectangle(x21, y11 x22, y12);
{Назначаем 1-е окно и рисуем четыре окружности}
SetViewPort(x11, y11, x12, y12, ClipOn);
for k: = 1 to 4 do
Circle(0,y11,R*k);
{Назначаем 2-е окно и рисуем окружности}
SetViewPort(x21, y11, x22, y12, ClipOff);
for k: = 1 to 4 do
Circle(0,y11,R*k);
{Ждем нажатия любой клавиши}
if ReadKey=#0 then k: = ord(ReadKey);
CloseGraph
end
end.

Процедура GetViewSettings

Возвращает координаты и признак отсечки текущего графического окна. Заголовок:

Procedure GetViewSettings(var Viewlnfo: ViewPortType);

Здесь Viewlnfo – переменная типа ViewPortType.

Этот тип в модуле Graph определен следующим образом:

type
ViewPortType = record
x1,y1,x2,y2: Integer; {Координаты окна}
Clip: Boolean {Признак отсечки}
end;

Процедура MoveTo

Устанавливает новое текущее положение указателя. Заголовок:

Procedure MoveTo(X,Y: integer);

Здесь X, Y – новые координаты указателя соответственно по горизонтали и вертикали.

Координаты определяются относительно левого верхнего угла окна или, если окно не установлено, экрана.

Процедура MoveRel

Устанавливает новое положение указателя в относительных координатах.

Procedure MoveRel(DX,DY: Integer);

Здесь DX.DY – приращения новых координат указателя соответственно по горизонтали и вертикали.

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.