11Б(1): 9 февраля (актировка), урок № 1, 2

 

11Б(1): 9 февраля (актировка), урок № 1, 2


Процедура 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
Роман Сахаров
09.02.2017 17:57:30
Сахаров Роман
Ответить Ссылка Мне нравится0
Мне нравится0
qwe
09.02.2017 17:57:40
.
Ответить Ссылка Мне нравится0
Мне нравится0
Kozlova_K
10.02.2017 13:58:37
Исправлено
Ответить Ссылка Мне нравится0
Мне нравится0
Роман Сахаров
10.02.2017 13:58:47
Сахаров Роман
Ответить Ссылка Мне нравится0
Мне нравится0
Алиева Джамиля
10.02.2017 14:16:33
/
Ответить Ссылка Мне нравится0
Мне нравится0
Regina_Gumerova
10.02.2017 14:42:46
Гумерова 11б
Ответить Ссылка Мне нравится0
Мне нравится0
Артур Даньшин
10.02.2017 21:07:52
Даньшин 11 б
Ответить Ссылка Мне нравится0
Мне нравится0
KZagreb
12.02.2017 18:12:24
Загребельная Екатерина 11б 1 группа
Ответить Ссылка Мне нравится0
Мне нравится0
Екатерина Худякова
12.02.2017 21:08:47
Худякова
Ответить Ссылка Мне нравится0
Мне нравится0
Московец Надя
21.02.2017 18:00:37
Домашняя работа.
Ответить Ссылка Мне нравится0

....