ть діючі кольори в перших Size елементах масиву. Процедури
GetPalette і
GetDefaultPalette повертають у фактичних параметрах значення типу PaletteType:
GetDefaultPalette (VAR Palette: PaletteType);
GetPalette (VAR Palette: PaletteType);
Вони відрізняються один від одного тим, що перша процедура повертає набір квітів, який встановлюється при ініціалізації графічного режиму, тобто за замовчуванням, а друга процедура повертає поточний набір кольорів. p> Функція GetPaletteSize : Word
повертає результат типу Word, який показує, яка кількість квітів входить в поточну програмну палітру. В принципі, ця функція повертає значення, рівне GetMaxColor +1.
Установка палітри. Для установки палітри в модулі Graph представлені три процедури різної складності. Процедура
SetPalette (ColorNum: Word ; Color : Shortlnt )
управляє тільки одним кольором в палітрі. ColorNum - це номер програмного кольору, Color - номер апаратного кольору, який буде під ним розумітися. p> Наприклад, виклик SetPalette (0, Red) робить червоний колір першим кольором палітри. Параметр Color може перевищувати максимальний програмний номер кольору, але тільки на адаптерах EGA (0 .. 63) і VGA. При некоректному виклику процедури функція GraphResult поверне значення grError. p> Бітові графічні операції
Опитування пікселів. Турбо Паскаль дозволяє організувати прямий доступ до кожного пикселу екрана за допомогою функції
GetPixel ( X , Y : Integer ).
Ця функція повертає значення типу Word-номер кольору пікселя з координатами (X, Y). Оскільки зазвичай номер кольору лежить в діапазоні 0 .. 15, значущим є тільки молодший байт.
Управління пікселями полягає в можливості призначити колір будь-якого пикселу екрану. Процедура
PutPixel (X, Y: integer; Color: Word); запалює на екрані в точці з координатами X, Y піксель кольору Color.
В
Управління відеосторінки
Пам'ять відеоадаптерів розділена на так звані сторінки, або відеосторінки. За умовчанням в графічному режимі дії проводяться з нульової сторінкою, тому практично у всіх попередніх прикладах було видно, як малюються на екрані фігури. Однак якщо направити вивід зображень на ненулевую сторінку (за умови, що така доступна в поточному режимі відеоадаптера, то на екрані нічого не відобразиться, оскільки за замовчуванням видимої є нульова сторінка. Якщо ж після цього дати команду вважати видимої В«ПриховануВ» сторінку, то вона з'явиться на екрані буквально миттєво (конкретно: за один прямий прохід променя в кінескопі). Проробити все це дозволяють дві процедури:
SetVisualPage (Page: Word )
яка встановлює В«видимоїВ» на екрані відеосторінки номер Page, і процедура
SetActivePage (Page: Word )
встановлює перенаправлення всіх графічних операцій на сторінку номер Page (тобто робить активною). Активність не тотожна видимості сторінки на екрані.
Розглянемо приклад використання цих процедур.
(* Приклад тільки для адаптерів EGA і VGA! *)
USES Graph, CRT;
{використовується Graph і CRT}
{$ I initgraf.pas}
{процедура ініціалізації}
PROCEDURE Forms (kadr: Byte);
{малювання кадрів 0 .. 3}
CONST
Radius: Array [0 .. 3] of Integer = (20, 40, 60, 60);
VAR
r, rr: Integer;
{радіуси еліпсів в кадрах}
BEGIN
r: = Radius [kadr];
{максимальний радіус}
rr: = 0;
{радіус вкладеного еліпса}
repeat
Ellipse (GetMaxX div 2, GetMaxY div 2,0,360, r, rr);
Inc (rr, 5);
until rr> = r;
END;
PROCEDURE AnimEGAVGA;
{процедура зміни кадрів}
CON...