ST ms = 60;
{затримка між кадрами, мс}
VAR i: Byte;
{параметр циклів зміни}
BEGIN
repeat
{цикл до натиснення клавіші ...}
for i: = 0 to 3 do begin
{Зміна відеосторінок: прямо}
SetVisualPage (i);
В
Delay (ms);
end;
for i: = 3 downto 0 do begin
{... і назад}
SetVisualPage (i);
В
Delay (ms);
end;
until KeyPressed;
{умова закінчення показу}
END;
VAR
(* ОСНОВНА ЧАСТИНА Прикладів *)
i: Byte;
{параметр (номер кадру)}
BEGIN
В
Grlnit;
{ініціалізація графіки}
SetGraphMode (EGALo);
{режим EGA, 640x200, 4 стор}
for i: = 3 downto 0 do begin
{Цикл заповнення сторінок}
SetVisualPage (Succ (i) mod 4);
{Бачимо "порожнечу"}
SetActivePage (i);
{і готуємо кадр}
Forms (i)
{малюнок кадру}
end; {for}
AnimEGAVGA;
{початок пожвавлення кадрів}
CloseGraph
END.
Тут показано використання процедур SetActivePage і SetVisualPage для алгоритму В«кадровоїВ» мультиплікації. Особливість її полягає в тому, що всі кадри (тут їх чотири) спочатку записуються на відповідні сторінки, а потім виробляється послідовне перемикання відображення сторінок на дисплей процедурою SetVisualPage.
В
Графічні вікна
В системі BGI-графіки вводиться термін В«viewportВ». Спеціальний словник дає таке роз'яснення: В«вьюпорта - це область перегляду, вікно екрану, в комп'ютерній графіці - частина простору відображення, в якій змальовується і проглядається частина модельованого об'єкта В». Ми будемо використовувати термін В«Графічне вікноВ». При утворенні графічного вікна виходить ніби В«екран в екрані В»заданого розміру. У модулі Graph для опису графічного вікна оголошений наступний тип і дві константи:
TYPE ViewPortType = RECORD
X1, Y1, X2, Y2: Integer ; /Td>
{кордону вікна}
Clip: Boolean;
{режим відсікання)
END ;
CONST
ClipOn = True;
{відсікання по межі вікна включено}
ClipOff = False;
{відсікання по межі вікна вимкнено}
Тут перші елементи запису - це координати прямокутної області (графічного вікна), як їх прийнято задавати, a Clip - це параметр, який вказує графічній системі, що робити з зображенням, що потрапили за межі цій галузі. Clip може приймати два значення. Значення ClipOn вказує на те, що всі елементи зображення обрізаються по межах графічного вікна, a ClipOff вказує на те, що всі малюється без змін.
Оголошення графічного вікна проводиться процедурою
SetViewPort (Х1, Y 1, Х2, Y 2: Integer ; ClipMode : Boolean )
вхідні параметри відповідають полям запису типу ViewPortType. Після виконання цієї процедури всі поточні установки стануть ставитися до вікна. Поточний покажчик (Графічний курсор) встановиться в його лівий верхній кут, і туди ж переноситься початок си...