Перемещение по экрану графических вставок из bmp-файлов в DOS про-граммах

Можно заставить отдельные фрагменты изображения из bmp-файла перемещаться по экрану, создавая различные эффекты анимации. Будем использовать изображение, записанное в оперативную память.

Возьмем за основу программу mov08DOS.cpp. Новую программу назовем mov09DOS. Изображение из bmp-файла разбиваем на небольшие блоки и помещаем в оперативную память. Это можно сделать с помощью конструктора класса ScreenMemory. Приведем соответствующую строчку кода.

Теперь берем блок памяти, составленный из нескольких элементарных блоков. На схеме этот блок слева обведен жирной линией. Затем этот блок изображения, надо вывести в какое то место на экране. Новое положение блока изображения показано на схеме в виде прямоугольника, сдвинутого на вектор. Заметим, что новое положение блока не обязано точно ложиться на сетку элементарных блоков.

            Для осуществления указанной операции добавим в класс ScreenMemory еще одну член-функцию (метод класса).   

      //выводим блок изображение на экран

      void ViewScreenLock(int i0, int j0, int nx, int ny, int x, int y);

 

Здесь i0, j0 – координаты левого верхнего угла, выделенного блока на сетке элементарных блоков. Для случая показанного на схеме эти координаты равны i0=0, j0=1. Далее параметры nx, ny – это размеры блока по горизонтали и вертикали на сетке элементарных блоков. Для случая показанного на схеме эти размеры равныnx=2, ny=3. Наконец, параметры x, y – это координаты левого верхнего угла, выделенного блока в новом положении, на растровой сетке. Для случая показанного на схеме эти координаты равны x=52, y=32 пикселей.

 

      //копируем изображение в оперативную память по блокам 10×10

      ScreenMemory ScMem(10,10,0,0,640,350);

Здесь размер элементарного блока выбран 10´10 пикселей. Внизу на условной схеме элементарные блоки памяти это маленькие квадратики. Заметим, что схема расположения блоков в оперативной памяти соответствует расположению изображения на экране.

Ссылка на основную публикацию
Adblock detector