Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Процедуры работы с экраном



Процедура Window определяет текстовое окно – область экрана, которая в дальнейшем будет рассматриваться процедурами вывода как весь экран. Сразу после вызова процедуры курсор перемещается в левый верхний угол окна, а само окно очищается (заполняется цветом фона). По мере вывода курсор смещается вправо и при достижении правой границы окна переходит на новую строку, а если он к этому моменту находился на последней строке, содержимое окна сдвигается вверх на одну строку, т.е. осуществляется «прокрутка» окна. Заголовок проце­дуры:

Procedure Window(XI,Y1,X2,Y2: Byte);

Здесь X...Y – координаты левого верхнего (X1,Y1) и правого нижнего (X2,Y2) углов окна. Они задаются в координатах экрана, причем левый верхний угол экрана имеет координаты (1,1) – горизонтальная координата увеличивается слева направо, а вертикальная — сверху вниз.

В следующем примере иллюстрируется вывод сообщений о цвете текста в двух разных окнах в обратных цветах цветовой палитры CRT.

Program DemoWindows;

Uses CRT;

Var i,j:integer;

Begin

TextBackGround(Blue);

ClrScr;

For i:=0 to 7 do

begin

Window(2,1,25,24);

TextBackGround(i);

ClrScr;

For j:=0 to 15 do

begin

TextColor(j);

writeln('Цвет №', j);

end;

Window(27,1,50,24);

TextBackGround(15-i);

ClrScr;

For j:=0 to 15 do

begin

TextColor(15-j);

writeln('Цвет №', 15-j);

end;

Readln;

end;

End.

Обращение к процедуре Window игнорируется, если какая – либо из координат выходит за границы экрана или если нарушается одно из ус­ловий: Х2>Х1 и Y2>Y1. Каждое новое обращение к Window отменяет предыдущее определение окна. Границы текущего окна запоминаются в двух глобальных переменных модуля CRT: переменная WindMin типа Word хранит XI и Y1 (X1 — в младшем байте), а переменная того же типа WindMax — Х2 и Y2 (Х2 — в старшем байте). При желании можно изменять их нужным образом без обращения к Window. Например, вместо оператора Window(40,2,70,17); можно использовать два оператора:

WindMin:= 39+(1 shl 8);

WindMax:= 69+(16 shl 8);

(в отличие от обращения к Window координаты, хранящиеся в пере­менных WindMin и WindMax, соответствуют началу отсчета 0,0).

Границы процедуры Window можно определять через относительные координаты. Например, следующая программа создает два белых окна в большом окне синего цвета:

Program DemoWindows;

Uses CRT;

Var i:integer;

Begin

TextbackGround(0);

ClrScr;

Window(25,2,55,24);

TextBackGround(Blue);

ClrScr;

i:=2;

Window(40,i,42,i+1);

TextBackGround(white);

ClrScr;

i:=6;

window(40,i,42,i+1);

ClrScr;

readln;

End.

Из этого примера видно, что использование комбинаций процедур Window позволяют создавать иллюзию простейших графических образов. Можно создавать иллюзию движения простейших фигур ипользованием метода последовательного наложения окон. Например, иллюзию движения кубика белого цвета в окне синего цвета нажатием на клавишу Enter, можно создаеть следующим образом:

Program DemoDvigenie;

Uses CRT;

Var i:integer;

Begin

TextbackGround(0);

ClrScr;

for i:=2 to 23 do

begin

Window(25,2,55,24); {Создаем новое окно, при этом }

TextBackGround(Blue); {все что было в старом стирается}

ClrScr;

Window(40,i,42,i+1); {Рисуем кубик с новыми}

TextBackGround(white); {координатами}

ClrScr;

readln;

end;

End.





Дата публикования: 2015-06-12; Прочитано: 182 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...