11 классы: GetImage и PutImage

 

11 классы: GetImage и PutImage


Процедура 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 для каждого байта в изображении. Таким образом, изображение появляется в инвертированном виде по отношению к первоначальному.
Функция ImageSize (модуль Graph)

Возвращает число байт памяти, необходимых для сохранения заданной прямоугольной области экрана.
Объявление:
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.
Задача на урок:
Организовать движение изображения:
Ваши результаты в виде файлов GetImage1_Фамилия_Класс_Группа.pas и GetImage1_Фамилия_Класс_Группа.exe добавляем к комментариям. Где:
  • Фамилия - фамилия автора работы,
  • Класс - класс с литерой,
  • Группа - номер группы.
Пример имен файлов: GetImage1_ Ivanov _11B_1.pas и  GetImage1_ Ivanov _11B_1.exe
' }), node.firstChild); }, clearError : function() { BX('err_comment_'+this.id[1]).innerHTML = ""; }, }; window.convertFormToArray = function(form, data) { data = (!!data ? data : []); if(!!form){ var i, _data = [], n = form.elements.length; for(i=0; i
Добавить комментарий
Мне нравится0
Кирилл Шапкин
15.02.2017 07:49:18
Шапкин К
Ответить Ссылка Мне нравится0
Мне нравится0
Максим Костин
15.02.2017 07:52:40
Работа_Костин
Работа_Костин
Ответить Ссылка Мне нравится0
Мне нравится0
Родион Шарипов
15.02.2017 07:52:57
Кек
ек
Ответить Ссылка Мне нравится0
Мне нравится0
Зуева Анастасия
15.02.2017 07:54:27
dlskjb
Ответить Ссылка Мне нравится0
Мне нравится0
ElizavetaKislitsyna
15.02.2017 07:58:08
Анимация
Ответить Ссылка Мне нравится0
Мне нравится0
Danil_lendel
15.02.2017 07:59:01
Lendel
GetImage1_Lendel_11_2
Ответить Ссылка Мне нравится0
Мне нравится0
Константин Душкин
15.02.2017 13:30:08
123
Ответить Ссылка Мне нравится0
Мне нравится0
Арсланов
17.02.2017 12:32:12
Кажется я забыл прикрепить файл
Ответить Ссылка Мне нравится0
Мне нравится0
LABIRITI
17.02.2017 12:33:16
на дом
Ответить Ссылка Мне нравится0
Мне нравится0
Sereja
17.02.2017 12:33:27
Работа
Работа
Ответить Ссылка Мне нравится0
Мне нравится0
Sereja
20.02.2017 23:09:02
доделанная работа
Ответить Родитель Ссылка Мне нравится0
Мне нравится0
Maksim
17.02.2017 12:33:46
Перемещение объекта
Доделать)
Ответить Ссылка Мне нравится0
Мне нравится0
Сашенька Тойкка
17.02.2017 12:33:59
Работу доделать с циклом problem
Ответить Ссылка Мне нравится0
Мне нравится0
Маргарита Макова
17.02.2017 14:45:07
GetImage
Ответить Ссылка Мне нравится0
Мне нравится0
KZagreb
18.02.2017 12:18:33
зАГРЕБЕЛЬНАЯ (Я НЕ ДОДЕЛАЛА!!!Я ДОДЕЛАЮ!!)
Ответить Ссылка Мне нравится0
Мне нравится0
Императорский пингвин
18.02.2017 12:20:34
я не доделала, но я доделаю 8)8)8)
Ответить Ссылка Мне нравится0
Мне нравится0
Дима Куфтерин
18.02.2017 12:24:17
файл
файл
Ответить Ссылка Мне нравится0
Мне нравится0
Кристина Козлова
18.02.2017 12:45:56
.
Ответить Ссылка Мне нравится0
Мне нравится0
Московец Надя
18.02.2017 12:46:48
Классная работа.
Ответить Ссылка Мне нравится0
Мне нравится0
КареваДД
18.02.2017 13:03:28
Работа
Карева дарья 11б
Ответить Ссылка Мне нравится0
Мне нравится0
Артур Даньшин
18.02.2017 13:37:31
Даньшин 11б 1
Ответить Ссылка Мне нравится0
Мне нравится0
Арсланов
20.02.2017 14:31:47
вроде бы отправил я завтра если что на всякий случай флэшку принесу:(
Ответить Ссылка Мне нравится0
Мне нравится0
LABIRITI
21.02.2017 04:56:43
Bon matin
Ответить Ссылка Мне нравится0
Мне нравится0
GJulia
21.02.2017 19:33:24
Работа
Ответить Ссылка Мне нравится0

....