![]() |
|
Модераторы: Akina |
![]()
|
|
| cardinal |
|
||||||||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
И так приступим.
Для работы нам понадобиться 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. Все приготовления завершены, приступаем к кодингу: Первое что мы делаем это узнаем размер картинки которую мы будем показывать:
Теперь добавим процедуру в наш таймер.
Все готово!!! Можете пробывать запускать проект и наблюдать как у вас на форме происходит невообразимой кросаты действо называемое анимацией З.Ы.Статья не претендует на полноту изложения, она просто описывает один из вариантов воспроизведения анимации. З.З.Ы. Надеюсь она кому ни будь поможет. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |