| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > 2D анимация |
| Автор: cardinal 18.2.2005, 18:32 | ||||||||||
| И так приступим. Для работы нам понадобиться API функция - BitBlt. Функция BitBlt выполняет передачу битовых блоков данных о цвете, соответствующих прямоугольнику пикселей из заданного исходного контекста устройства в целевой контекст устройства. И лежит она в Gdi32.lib А вот её С прототип:
А возвращает эта функция не ноль если все прошло успешно и ноль если в чем то проблема. Жутко выглядит на первый взгляд, не правда ли? Но не пугайтесь ни чего страшного в ней нет. Переходим к практике. Первым делам создаем новый проект. И объявляем в области General нашу функцию. А объявляется она следующим образом:
Дальше мы опишем несколько глобальных переменных необходимых нам для работы:
Теперь будем рисовать ;-) А нарисуем мы несколько картинок быстрый просмотр которых даст эффект движения (как кадры в мультиках). Но этого недостаточно. Дабы на нашей картинки мы могли использовать прозрачный цвет (ну скажем что нарисовать бублик с дыркой в середине) нам необходимы маски наших картинок. Маска выглядят точно так же как и картинка, но все цвета не являющиеся цветом фона обращены в черный. Такое можно изобразить в любом граф. редакторе. И так у меня получилось 6 изображений (кадров) и соответственно 6 изображений масок. Дальше мы открываем нашу форму и устанавливаем свойство AutoRedraw в значение True. Теперь на понадобиться массив из 6 Image, в которые мы загрузим наши кадры и 6 Image, в которые мы загрузим наши маски. Внимательно следите что бы кадр и маска к этому кадру имели одинаковые индексы. Первый массив мы назовем Kadr(), а второй соответственно Msk(). Установим у всех Image свойства Visible=False, AutoRedraw=True, AutoSize=True. Теперь бросаем на форму таймер и устанавливаем свойство Interval ну например 50. И еще на понадобиться два PictureBox для вывода нашего изображения. Кстати их тоже сделаем невидимыми Visible=False. Все приготовления завершены, приступаем к кодингу: Первое что мы делаем это узнаем размер картинки которую мы будем показывать:
Теперь добавим процедуру в наш таймер.
Все готово!!! Можете пробывать запускать проект и наблюдать как у вас на форме происходит невообразимой кросаты действо называемое анимацией З.Ы.Статья не претендует на полноту изложения, она просто описывает один из вариантов воспроизведения анимации. З.З.Ы. Надеюсь она кому ни будь поможет. |