Процедура SetViewPort

Модуль GRAPH

Устанавливает текущую область просмотра или окно для графического режима.

Объявление:

Procedure SetViewPort(x1, y1, x2, y2 : Integer; Clip : Boolean);

Режим:

Protected,  Real

Замечание:

Точка (X1, Y1) определяет верхний левый угол области просмотра, а (X2, Y2) определяет нижний правый угол (0 <= X1 < X2 и 0 <= Y1 < Y2). Верхний левый угол области просмотра - точка с координатами (0, 0). Булевый параметр Clip определяет, отсекать ли рисунок по текущим границам области просмотра. Обращение типа SetViewPort (0, 0, GetMaxX, GetMaxY, True устанавливает область просмотра на весь экран. Если при обращении к SetViewPort переданы некорректные параметры, то в переменной GraphResult сохраняется значение grError, и текущие установки просмотра не будут изменены. Все графические команды (например, GetX, OutText, Rectangle, MoveTo и так далее) являются зависимыми относительно текущей области просмотра. В примере программы к этой процедуре, координаты центральной точки относительны к границам области просмотра. Если булев параметр Clip равен True, то все рисунки будут отсекаться по текущим границам области просмотра. Обратите внимание, что текущий указатель никогда не отсекается.Следующий пример не будет рисовать целую линию, потому что часть линии выходит за границы области просмотра: SetViewPort(10, 10, 20, 20, ClipOn); Line(0, 5, 15, 5); Если бы параметр Clip не равнялся True, то линия началась бы в абсолютных координатах (10, 15) и закончилась бы в абсолютных координатах (25, 15). Но из-за выполнения отсечения, фактическая линия началась в абсолютных координатах (10, 15) и закончилась в координатах (20, 15). Процедуры InitGraph, GraphDefaults и SetGraphMode сбрасывают область просмотра на весь графический экран. Текущие установки области просмотра можно получить, вызвав процедуру GetViewSettings. Вызов SetViewPort перемещает текущий указатель (CP) в точку (0, 0). Нужно быть в графическом режиме.

Пример:

{SetVwPrt.PAS}
 
 { Пример программы для процедуры SetViewPort }
 
 Uses Graph;
 
 Var Gd, Gm : Integer;
 
 Begin
  Gd:=Detect;
  InitGraph(Gd, Gm, '');
  If GraphResult <> grOk Then Halt(1);
  SetColor(1);
  Line(0, 0, 50, 50);
  Rectangle(60, 0, GetMaxX - 60, 50);
  SetColor(2);
  SetViewPort(60, 0, GetMaxX - 60, 50, ClipOff);
  Line(0, 0, 100, 100);
  SetColor(3);
  SetViewPort(60, 0, GetMaxX - 60, 50, ClipOn);
  Line(50, 0, 150, 100);
  ReadLn;
  CloseGraph;
 End.