Язык:
Русский
English
SetViewPort (процедура) (модуль Graph)
Устанавливает текущую область просмотра или окно для графического режима.
Объявление
Procedure SetViewPort(x1, y1, x2, y2 : Integer; Clip : Boolean);
Режим
Real, Protected
Замечания
Точка (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).
Ограничения
Нужно быть в графическом режиме.
Смотри также
Пример
Язык:
Русский
English
{ Пример программы для процедуры SetViewPort }
var
Gd, Gm : Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, 'X:\BP');
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.