|
3 / 3 / 0
Регистрация: 15.05.2015
Сообщений: 76
|
||||||||||||||||
Воспроизведение GIF анимации в VB606.05.2020, 21:58. Показов 7486. Ответов 20
Метки нет (Все метки)
Добрый день. Искал поиском по форуму, гуглил в интернете, но решения или примеров кода так и не нашел. Посему, вот тема:
Мне необходимо вставить показ анимированных GIF файлов на форме VB6, с последующей сменой демонстрируемых GIF файлов в контроле. Поскольку стандартные PictureBox и Image отображают GIF только в виде статичного первого кадра из анимации и для задачи не подходят (таймер + куча кадров - не наш метод), решил поискать решение в других контролах из комплекта VB6. И решение нашлось, но.... не такое как хотелось бы. WebBrowser (компонент Microsoft Internet Controls)
Однако, несмотря на то, что размер поля контрола WebBrowser я растянул значительно больше размеров демонстрируемой картинки, поле WebBrowser всегда отображает полосы прокрутки. А мне этого не нужно. Свойтво ScrollBars у контрола отсутствует. При этом свойствам - AddressBar, MenuBar, StatusBar (...логично подумать, если всё это повырубать, то вероятно, полосы прокрутки исчезнут) присвоить значение False невозможно. В окне Properties они снова возвращаются в True после первого же запуска. Присвоение этим свойствам False через строки кода тоже безрезультатно (никаких видимых изменений.) Scriptlet (компонент Microsoft HTML Object Library) Визуально данный контрол выглядит как PictureBox или Image. В окне Properties для свойства url указываем путь к файлу (например - file:///C:/....<путь>..../animation.gif ) и анимация отображается. Однако, когда мне нужно сменить файл в поле контрола, компилятор выдаёт ошибку. - Invalid use of property
p.s. Как вариант - вывалить на форму кучу контролов с разными GIF картинками по одной в каждом, и переключать их через свойство Visible... Работает, но это слишком уж убого-топорный вариант. Если не брать во внимание загромождение формы объектами, немаловажный момент - анимация в контролах никогда не останавливается. То есть при отображении/сокрытии будут непременно возникать моменты, когда текущий GIF файл уже воспроизводится где-то с середины.
0
|
||||||||||||||||
| 06.05.2020, 21:58 | |
|
Ответы с готовыми решениями:
20
Генерация GIF-анимации из кадров Воспроизведение gif-анимации
|
|
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 184
|
|
| 06.05.2020, 23:06 | |
|
0
|
|
|
|
|||||||
| 07.05.2020, 07:09 | |||||||
Сообщение было отмечено MrRoxMJ как решение
РешениеЕсть решения готовые, например от TheTrick: GifViewer.zip Есть решения простые, на готовом OCX GifAnima.zip Есть простые без OCX АнимацияГИФ.zip Но если всё же webbrowser без полос прокрутки, то тоже было, помнится ёлки рисовали: Елки GIF.zip Пользуйтесь! Кстати, код по уничтожению прокруток, бордюров, всякие способы тут:
5
|
|||||||
|
3 / 3 / 0
Регистрация: 15.05.2015
Сообщений: 76
|
|
| 07.05.2020, 14:10 [ТС] | |
|
Огромное спасибо, Pro_grammer!)
- GifViewer.zip У меня не завёлся. Там какого-то объекта не хватает. Глубоко не стал разбираться в коде что к чему. - GifAnima.zip Действительно радикальное и при этом простое решение) Если стандартные контролы (Image и PictureBox) изначально не приспособлены отображать анимацию, то почему бы не использовать сторонний контрол, который под это специально "заточен"? Там есть своя заморочка со Start/Stop и мерцанием, но она легко решается в коде. Единственно, в папке с готовой программой должен всегда лежать OCX файл. - АнимацияГИФ.zip Согласен, это работает)) Разбивать каждый файл анимации покадрово, с длительностью каждого кадра - в массив. Затем отображать это всё в Image с таймером. Решение из разряда - как, имея в распоряжении только циркуль и линейку, спроектировать космическую ракету. Текста кода столько, что его выделили в отдельный модуль. Когда-нибудь я "осилю многа букаф" и разберусь в этом коде подробно, как он устроен. - Елки GIF.zip У меня тоже была уже мысль просто спрятать полосу прокрутки за пределами формы)) Но самое интересное тут другое - сделать фон WebBrowser прозрачным по цветовому коду из GIF. Спасибо, очень полезная штука. - "код по уничтожению прокруток..." Это есть решение всех моих проблем!)) Если бы сразу знать, что скрывать границы/прокрутки... нужно искать не через свойства самого объекта, а через .Document -> body -> Style (ох и глубоко же они запрятали эти параметры!). Как говорится, век живи-век учись. Выпишу себе этот код в блокнот чтобы не потерять. WebBrowser совместно с кодом прозрачности фона из "ёлок" - то что я искал. Ещё раз спасибо за помощь. Добавлено через 11 минут p.s. Решение найдено, хотя, заодно в этой же теме до конца разобраться и с контролом Scriptlet тоже было бы неплохо, как там правильно менять url строкой кода, и возможно ли это, или контрол "кривой"...
0
|
|
|
Модератор
|
|||
| 07.05.2020, 17:19 | |||
|
Добавлено через 56 секунд
0
|
|||
|
3 / 3 / 0
Регистрация: 15.05.2015
Сообщений: 76
|
||
| 07.05.2020, 18:27 [ТС] | ||
|
На строку - modGif.hWnd = picGif.hWnd ' Отрисовываем в PictureBox'e Ошибка - 424: Object required Я тогда подумал что вероятно на форму забыли поместить какой-то контрол под таким названием. А только сейчас заметил в папке файл modGIF.bas . Понял, что то было недостающее не контрол, а модуль. Запустил с VBP. Всё работает. Упс...)))
0
|
||
|
3 / 3 / 0
Регистрация: 15.05.2015
Сообщений: 76
|
|
| 08.05.2020, 15:57 [ТС] | |
|
Дополню сюда же в тему. Всплыл такой момент:
Использую WebBrowser. Как отучить его "кликать" звуком в моент замены картинки (webbrowser.Navigate) ? Программа связана со звуком, а контрол, меняя GIFы по таймеру, постоянно "клацает". Параметр Silent у этого контрола оказался не про звук)) Уважаемый Pro_grammer, быть может, в дополнение к параметрам "WebBrowser.Document.body...." Вы знаете хитрую строчку, которой можно также выключить и звук у WebBrowser ?
0
|
|
|
|
|||||||
| 08.05.2020, 17:20 | |||||||
|
Сам не пробовал, потому вам испытывать! Декларация:
2
|
|||||||
|
3 / 3 / 0
Регистрация: 15.05.2015
Сообщений: 76
|
|
| 08.05.2020, 18:18 [ТС] | |
|
Работает! Спасибо большое! "Клацанья" больше нет
0
|
|
|
1 / 1 / 0
Регистрация: 30.12.2019
Сообщений: 194
|
||
| 03.01.2021, 19:01 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 30.12.2019
Сообщений: 194
|
|
| 03.01.2021, 19:25 | |
|
Argus19,
Это значит невозможно. Жалко
0
|
|
|
|
||
| 03.01.2021, 19:43 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 30.12.2019
Сообщений: 194
|
||||||
| 03.01.2021, 20:01 | ||||||
|
Argus19,
пробовал вот так
0
|
||||||
|
|
||
| 03.01.2021, 20:42 | ||
|
Посмотрите внимательнее код из примеров. В анимированом .gif несколько кадров. При загрузке отображается только первый кадр. Чтобы была анимация, нужно получить из файла количество кадров и время их показа, получить их местоположение в кадре, запустить таймер и копировать их в указанный контрол по очереди.
0
|
||
|
1 / 1 / 0
Регистрация: 30.12.2019
Сообщений: 194
|
|
| 03.01.2021, 21:02 | |
|
Argus19,
ясно спасибо
0
|
|
|
1 / 1 / 0
Регистрация: 30.12.2019
Сообщений: 194
|
|
| 03.01.2021, 21:49 | |
|
Argus19,
для тебя хот сколько угодно поставлю +1
0
|
|
|
|
|
| 06.01.2021, 01:12 | |
|
1
|
|
| 06.01.2021, 01:12 | |
|
Помогаю со студенческими работами здесь
20
Воспроизведение Gif анимации Чтение файла GIF. Перевод текста в HEX. Декодирование GIF анимации Создание gif анимации Создание анимации GIF Создание анимации (gif) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|