Кодинг
★ Рубрика: Кодинг
★ Тема: Pascal

Функции для мультипликации в Паскале

Графической страницей называют область оперативной памяти, используемой для создания «карты» экрана, т.е. содержащая информацию о светимости (цвете) каждого пикселя. В Паскале можно запоминать двоичный образ экрана в памяти ЭВМ и выдавать его на экран. Таким образом можно создать мультипликацию. Для этого используются следующие процедуры и функции модуля Graph.

ImageSize(X1,Y1,X2,Y2 : Word): Word; – функция, которая определяет размер блока памяти в байтах для сохранения двоичного об-раза прямоугольной области экрана с координатами левого верхнего (X1,Y1) и правого нижнего (X2,Y2) углов. Максимальный размер блока, в который может быть помещен образ экрана, равен 64 Кбайт.

Пример.
Size := ImageSize(1,1,100,50);
Переменной Size присваивается значение размера области памяти, необходимой для сохранения образа экрана с координатами (1,1,100,50).

GetMem(Var Указатель:Pointer; Размер:Word); – процедура, которая создает динамическую переменную указанного размера и возвращает ее адрес в Указатель.

Пример.
GetMem(P,Size);
{выделена область для хранения образа размером Size из предыдущего примера. Адрес начала области хранится в указателе p.}

GetImage(X1,Y1,X2,Y2:Word;Var битовый_массив) - сохраняет двоичный образ заданной области экрана (область задается координатами (X1,Y1)– левый верхний угол и (X2,Y2)– правый нижний угол). Параметр битовый_массив является выходным и не имеет типа (нетипизированный). Именно в нем сохраняется двоичный образ области экрана, задаваемой первыми четырьмя параметрами процедуры. Размер этого массива необходимо определять, используя функцию ImageSize. Так как процедура GetMem создает динамическую переменную именно такого размера и указывает на нее с помощью Указателя, то фактическим параметром, соответствующим формальному битовый_массив, при вызове процедуры GetImage должен быть Указатель^.

Пример.
GetImage (1,1,100,50, P^);
По адресу, находящемуся в указателе P, сохранен образ прямоугольной области экрана с координатами (1,1,100,50).

PutImage(X,Y: Word; Var битовый_массив; Двоич_опер : Word); – в прямоугольную область экрана, верхний угол которой задается координатами (X,Y), выводится двоичный образ, сохраняемый в параметре битовый_массив. Параметр Двоич_опер определяет, какая операция будет выполняться между битами выводимого изображения и битами изображения (возможно, фонового), находящегося в прямоугольной области экрана, в которую осуществляется вывод. Определены сле-дующие константы и их значения.

NormalPut = 0; – вывод изображения безо всякого взаимодействия с имеющимся на экране (как на белый лист).
XorPut = 1; – выполняется операция XOr между битами выводимого изображения и экраном. Если в области, куда производится вывод, было точно такое же изображение, то оно сотрется. Такой прием стирания изображения часто используют при создании мультипликаций и перемещений картинок по экрану.
OrPut = 2; выполняется операция Or между битами выводимого изображения и экраном.
AndPut = 3; выполняется операция And между битами выводимого изображения и экраном.
NotPut = 4; – сначала выполняется операция Not над битами выводимого изображения (получается негатив), а потом оно выводится как NormalPut. Таким образом, на экране получается негативное изображение образа.

Пример.
PutImage(20, 10, P^, NotPut); 
Начиная от точки экрана с координатами (20, 10), выведено негативное изображение, сохраненное по адресу, помещенному в указатель P.
 Похожие публикации: Pascal

Войти и комментировать [ Вход | Регистрация ]