В
графическом режиме поддерживается концепция
окон.
Окно
представляет собой прямоугольную область экрана со своей
относительной системой координат. По умолчанию окно занимает
весь экран, значения координат его левого верхнего и правого
нижнего углов устанавливаются автоматически процедурой
инициализации (например, (0,0) и (640,480)).
Чтобы
стереть все изображения на экране, т. е. очистить его,
используется процедура без параметров
С1еarDevice или процедура
GraphDefauits, которая не только очищает экран, а и
выполняет все стартовые установки графических
параметров.
Процедура
SetViewPort (X1,Y1,X2,Y2
: integer;
Clip: boolean); служит
для организации окон. Здесь XI,Y1 —координаты левого
верхнего угла, X2,Y2 — координаты правого нижнего угла.
Параметр Clip определяет, будут ли фрагменты
изображения отсекаться при попадании
за пределы окна (Clip = True или
Clip = ClipOn) или нет (Clip =
False или Сliр = СlipOff). После
создания окна началом координат станет верхний левый угол
окна, который будет иметь координаты (0,0).
Процедура
CiearViewPort; используется для очистки окна. Текущее
окно при этом заполняется фоновым цветом, а текущий указатель
устанавливается в точку с координатами (0,0). Напомним, что это
координаты во внутренней системе координат, связанной с данным
окном, а не в системе координат полного экрана. Перейти к
системе координат полного экрана можно с помощью процедуры
ClearDevice или задав в процедуре установки окна максимально
возможные значения: SetViewPort(0,0,GetMaxX,GetMaxY,True).
program
Prim_2;
Uses Graph;
Var Driver, Mode: integer;
Procedure GrInit;
Begin
Driver:= Detect; {автораспознавание драйвера}
InitGraph (Driver, Mode,'');
If GraphResult<>0 then
Begin
Writeln ('Ошибка инициализации!');
Writeln ('Работа программы прервана');
Halt (1) {Остановить выполнение программы с кодом завершения -
1}
End
End;
Begin
GrInit;
{графические действия}
{Устанавливаем размеры "открытого окна"}
Setviewport(1,1,650,450,true);
{Рисуем прямоугольник}
Rectangle(50,50,200,200);
{Меняем цвет линий для следующей фигуры}
Setcolor(11);
{Рисуем прямоугольник}
Rectangle(300,300,400,350);
{Меняем цвет линий для следующей фигуры}
Setcolor(5);
{Рисуем прямоугольник}
Rectangle(400,30,600,250);
{Компьютер ожидает нашего нажатия клавиши
Enter}
Readln;
{Очістка экрана}ClearViewPort;
{Компьютер ожидает нашего нажатия клавиши
Enter для выхода из графического режима}Readln;
CloseGraph
End.
В следующей
программе изменили только одну строку
Setviewport(1,1,650,450,true)àSetviewport(1,1,250,250,true).
Результат выполнения программы тоже изменился. При
выполнении алгоритма Пример 2 на экране рисуется 3
прямоугольника, а при выполнении программы 3 - только 1.