Процедура GetImage (модуль Graph)
Сохраняет участок изображения в буфер.
Объявление:
Procedure GetImage(X1, Y1, X2, Y2 : Integer; Var BitMap);
Замечания:
Параметры X1, Y1, X2 и Y2 определяют прямоугольную область на экране. BitMap — нетипизированный параметр, который должен быть больше или равен 6 плюс количество памяти, занимаемой изображением в данной области. Первые два слова в BitMap содержат ширину и высоту области. Третье слово зарезервировано.
Оставшаяся часть памяти в BitMap используется для хранения двоичного образа данного участка изображения. Используйте функцию ImageSize, чтобы определить необходимый размер параметра BitMap. Для выделения и освобождения памяти можно использовать GetMem и FreeMem, соответственно.
Ограничения:
Нужно быть в графическом режиме. Количество памяти, необходимое для хранения битового образа участка изображения, не должно превышать 64Кб.
Процедура PutImage (модуль Graph)
Помещает битовое изображение на экран.
Объявление:
Procedure PutImage(X, Y : Integer; var BitMap; BitBlt : Word);
Замечания:
Точка с координатами (X, Y) — верхний левый угол прямоугольной области на экране. BitMap — нетипизированный параметр, в котором содержится высота, ширина и двоичный образ изображения, которое будет помещено на экран. BitBlt определяет, какая двоичная операция будет использована при выводе изображения на экран.
Каждой двоичной операции соответствует константа. Например:
- PutImage (X, Y, BitMap, NormalPut) помещает на экран изображение, сохраненное в BitMap с позиции (X, Y), используя команду ассемблера MOV для каждого байта в изображении.
- PutImage (X, Y, BitMap, XORPut) помещает на экран изображение, сохраненное в BitMap с позиции (X, Y), используя команду ассемблера XOR для каждого байта в изображении. Это часто используемая методика в анимации для перемещения изображения по экрану.
-
PutImage (X, Y, Растр, NotPut) инвертирует биты в BitMap и затем помещает на экран изображение, сохраненное в BitMap с позиции (X, Y), используя команду ассемблера MOV для каждого байта в изображении. Таким образом, изображение появляется в инвертированном виде по отношению к первоначальному.
Возвращает число байт памяти, необходимых для сохранения заданной прямоугольной области экрана.
Объявление:
Function ImageSize(X1, Y1, X2, Y2 : Integer) : Word;
Замечания:
Параметры X1, Y1, X2 и Y2 определяют прямоугольную область на экране. Функция ImageSize возвращает число байт, необходимых для сохранения заданной области экрана. Размер изображения также включает три значения типа Word. Первое — ширина области, второе — высота области, а третье зарезервировано.
Если количество памяти, требуемое для сохранение области, больше или равно 64Кб, то возвращается значение, равное нулю, и функция GraphResult возвращает значение -11 (grError).
Процедура GetMem
Создает динамическую переменную определенного размера и записывает ее адрес в памяти в указательную переменную.
Объявление:
Procedure GetMem(Var P : Pointer; Size : Word);
Замечания:
Параметр P - переменная любого указательного типа. Параметр Size - выражение, определяющее размер динамической переменной в байтах. Недавно созданная переменная может быть вызвана как P^.
Если в куче недостаточно свободного пространства для распределения динамической переменной, то происходит ошибка во время выполнения программы.
Ограничения:
Самый большой блок, который может быть безопасно распределен в куче равен 65528 байт.
Пример программы:
uses Graph; var Gd, Gm : SmallInt; P : Pointer; Size : Word; begin Gd := Detect; InitGraph(Gd, Gm, ''); SetFillStyle(8, 15); Bar(0, 0, 100, 100); Size := ImageSize(10, 20, 30, 40); { Определяем размер изображения } GetMem(P, Size); { Распределяем память в куче } GetImage(10, 20, 30, 40, P^); { Помещаем изображение в память } ClearDevice; { Очистка экрана } PutImage(100, 100, P^, NormalPut); { Помещаем изображение из памяти на экран } ReadLn; CloseGraph; end. |
Организовать движение изображения:
- по прямой (режим бегущей строки);
- по синусоиде;
- по кругу, в помощь: "Образец программы, моделирующая вращение Земли вокруг Солнца";
- по траектории "бесконечность".
- Фамилия - фамилия автора работы,
- Класс - класс с литерой,
-
Группа - номер группы.