trains_hr.gif
 


В ПОМОЩЬ СТУДЕНТУ И ШКОЛЬНИКУ

 


Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]  [ДАЛЕЕ]

7. Сохранение образов графических изображений в оперативной памяти и их восстановление на экране.

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

   Сохранение и восстановление графических изображений обеспечивается следующими процедурами и функциями модуля Graph:

  • GetImage(X1, Y1, X2, Y2: integer; var BitMap); - сохраняет в оперативной памяти образ прямоугольной области графического изображения экрана. X1, Y1 - координаты верхнего левого угла прямоугольной области, а X2, Y2 - координаты нижнего правого угла. Изображение запоминается в переменной BitMap. Размер BitMap должен быть на 4 байта больше, чем необходимо для сохранения заданного объема графического изображения, поскольку в этих байтах запоминается ширина и высота сохраняемой прямоугольной области экрана.
  • ImageSize(X1, Y1, X2, Y2: integer): word; - возвращает количество байт, необходимое для сохранения прямоугольной области графического изображения экрана с координатами (X1, Y1, X2, Y2). Возвращаемое ImageSize значение включает необходимую память для запоминания высоты и ширины прямоугольной области (4 байта). Если объем оперативной памяти, необходимой для сохранения прямоугольной области графического изображения экрана, больше 64 Кб, то ImageSize равно 0, а GraphResult = -11. Чтобы этого избежать, следует сохранять изображение по частям.
  • PutImage(X1, Y1: integer; var BitMap; BitBit: word); - выводит на экран сохраненный в BitMap образ прямоугольной области графического изображения экрана. Место на экране, куда восстанавливается сохраненное изображение, задается координатами X1, Y1 - верхний левый угол прямоугольной области. Переменная BitBit задает режим вывода на экран сохраненного изображения. Ее значения определяются соответствующим списком констант из раздела интерфейса модуля Graph:
    const NormalPut = 0; {MOV}
    XORPut = 1; {XOR}
    ORPut = 2; {OR}
    ANDPut = 3; {AND}
    NOTPut = 4; {NOT}
    Каждая из этих констант соответствует записанной в комментариях бинарной операции.
    1. Если BitBit = NormalPut, то сохраненное изображение просто выводится на экран с использованием инструкции Ассемблера MOV (поместить).
    2. Если BitBit = XORPut, то при выводе изображения используется инструкция XOR. То есть к каждому байту видеопамяти и байту сохраненного изображения применяется операция побитового исключающего ИЛИ (происходит наложение изображения).

   Аналогично выполняются и другие бинарные операции. В качестве примера общей схемы процедуры сохранения графического изображения рассмотрим следующий пример:
Uses Graph;
Var Gd, Gm: integer; P: pointer; Size: word;
Begin
{Инициализация графического режима}
Gd := Detect; InitGraph(Gd, Gm, '');
if GraphResult <> 0 then Halt(1);
..........
{Определение необходимого объема для сохранения графического изображения}
Size := ImageSize(10, 100, 20, 110);
{Выделение области динамической памяти, где будет храниться образ прямоугольной области}
GetMem(P, Size);
{Сохранение изображения}
GetImage(10, 100, 20, 110, P^);
...........
{Восстановление изображения}
PutImage(10, 10, P^, 0);
...........
FreeMem(P, Size);
CloseGraph;
End.

   В этом примере изображение прямоугольной области экрана с координатами (10, 100, 20, 110) сохраняется в динамической области оперативной памяти, затем восстанавливается в другом месте экрана с координатами левого верхнего угла (10, 10).

Пример: Программа, демонстрирующая движение фигуры по экрану.
[program GetPutImage]

[НАЗАД]  [ДАЛЕЕ]


Главная
Новости
TurboPascal
Учебное пособие
Лекции
Исходники
Математика
Книги
Лекции
Шпоры
ЦТ и ЕГЭ
Физика

Книги

Шпоры
ЦТ и ЕГЭ

Литература

Сочинения

Краткие содержания

Другое
Мой родной край
Фотогалерея
Форум
Ссылки

Гостевая






 

                                        © Copyright(c) 2004 Amro Group. All rights reserved

 

Hosted by uCoz