С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/35: Рейтинг темы: голосов - 35, средняя оценка - 4.80
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
1

Play, Stop, Pause, Resume, Reverse для Gif анимации на кнопке или в других объектах

11.01.2015, 03:00. Показов 6679. Ответов 36
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно в теме все указано. Не подскажете как это реализовать? Хочу сделать красивый анимированный интерфейс на основе Gif анимации.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.01.2015, 03:00
Ответы с готовыми решениями:

Имитация нажатий медиаклавиш Play Pause Stop и тд
Приветствую всех. Не могу реализовать имитацию нажатия VK_VOLUME_MUTE VK_VOLUME_DOWN...

Медиаплеер - не работают кнопки Stop, Play и Pause
Помогите пожалуйста с медиаплеером. Не работают кнопки Stop, Play и Pause, вернее они работают...

GIF Stop and Play
Как можно остановить и влючить проигрывание анимации. И нужно чтобы анимация останавливалась на...

Как сделать так чтобы в процедурах понимался этот массив- (s: Array[0.2] of string = ('Play','Stop','Pause');)
Вот даны процедуры: procedure TVideoRecorder.play; begin if (v_power = True) and (v_title =...

36
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
11.01.2015, 09:26 2
Yury Komar, "воспроизвести" кадры .gif в таймере не вариант?
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
11.01.2015, 10:09  [ТС] 3
Nachrichter, так это мне и интересно. Нужно в любой нужный мне момент начать воспроизвеление. Остановить. Продолжить с места остановки. И неплохо еще иметт возможность их проиграть в обратном порядке. То что это крутить в таймере - само собой...
но как это делать?
очень буду признателее ща помощь.

Добавлено через 2 минуты
Например есть гифка для кнопки с изображением книжки. На нее наводишь она открывается и останавливается. Отводишь - в обратном порядке закрывается и в таком духе.
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
11.01.2015, 10:36 4
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

Yury Komar, вот, как-то делал воспроизведение .gif в PictureBox'e:
VB.NET
1
2
3
4
Imports System.Drawing.Imaging
 
Dim gifImage As Image = Image.FromFile("C:\1.gif")
Dim Index As Integer = 0
в таймер:
VB.NET
1
2
3
4
5
6
gifImage.SelectActiveFrame(New FrameDimension(gifImage.FrameDimensionsList(0)), Index)
picturebox1.Image = gifImage
Index = Index + 1
If Index = gifImage.GetFrameCount(New FrameDimension(gifImage.FrameDimensionsList(0))) Then
   Index = 0
End If
может, получится под Ваши задачи доработать.
2
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
11.01.2015, 10:55  [ТС] 5
Nachrichter, оу. Спасибо огромное.самое тут главнре это возможность вытянуть конретный фрэйм. Думаю то что надо.
еще раз спасибо. Варучили

Добавлено через 3 минуты
Nachrichter, так как кол во фрэймов мне известно и места остановок тоже. То этот пример будет в самый раз по мне...
но было б не плохо еще уметь управлять уже загпуженным изображением. Хотя наверное это решаемо загпузкой в пепеменную gifImage не файла а изоьрадение с кнопки иои формы?
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
11.01.2015, 11:07 6
Цитата Сообщение от Yury Komar Посмотреть сообщение
это решаемо загрузкой в переменную gifImage не файла а изображения с кнопки или формы
Надо пробовать.
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
11.01.2015, 13:22  [ТС] 7
Nachrichter, ок. Отпишусь потом. Но в теории должно.
0
Почетный модератор
21470 / 9154 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
11.01.2015, 13:48 8
Имхо, картинка будет анимироваться и без таймера.
VB.NET
1
picturebox1.Image = gifImage
Тут мы просто посылаем гиф в PictureBox.
1
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
11.01.2015, 18:52  [ТС] 9
Памирыч, тут важна еще остановка проигрывания в нужный момент. Проигрывание в обратном порядке. Сброс, пауза и тд.
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
11.01.2015, 18:56  [ТС] 10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Nachrichter, Памирыч, получилось...
еще раз спасибо Nachrichter за наводку...
готовый проект прилепил в пост.
P.S. мне было еще очень важно чтобы анимация не проигрывалась самопроизвольно. Контроль нужен был, для этого использую свойство BackgroundImage, оно не воспроизводит GIF.
Вложения
Тип файла: zip Плеер GIF Анимации.zip (163.9 Кб, 341 просмотров)
5
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
11.01.2015, 19:03  [ТС] 11
Памирыч, у пикчура я нашел баг небольшой... если в негоивтавлена Гифка, все вроде шевелится. Но стоит вашей форме уйти на задний план, плюс стороннее окно развернуть на весь экран - анимация останавливается и не продолжается, пока программно в пукчур бокс не перегрущишь файл заново... а мой вариант решает эту проблему, так как имеется контроль показа фрэймов анимации по его порялковому номеру.
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
11.01.2015, 20:43 12
Yury Komar, отлично получилось! Надо бы в раздел исходников этот проект добавить.
1
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
11.01.2015, 20:59  [ТС] 13
Nachrichter, спасибо, но рано. Я его чуть доработаю потом. Хотя что там дорабатывать... добавить бегунок выбора нужного фрэйма, да отдельную кнопочку для выбора направления проигрывания "вперед/назад" чтоб понятнее был код... хотя, думаю этого достаточно и так
0
834 / 642 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
12.01.2015, 18:58 14
Эх.. Вот если бы из самой гифки интервалы между кадрами брать... Тем более, они разные могут быть.
0
1542 / 1504 / 324
Регистрация: 03.10.2012
Сообщений: 1,540
13.01.2015, 00:36 15
Цитата Сообщение от Qwertiy Посмотреть сообщение
самой гифки интервалы между кадрами брать
Средствами VB NET в метаданных гифки определяется два свойства под номерами 20736 и 20737. Но они закодированы в виде массивов байтов. Возможно, это и есть интервалы и количество фреймов. Как их правильно декодировать, думаю, надо смотреть спецификации по GIF.
Как получить метаданные.
0
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
13.01.2015, 19:25 16
Цитата Сообщение от MrCrown Посмотреть сообщение
два свойства под номерами 20736 и 20737. Но они закодированы в виде массивов байтов. Возможно, это и есть интервалы и количество фреймов. Как их правильно декодировать, думаю, надо смотреть спецификации по GIF.
Можно попробовать определить, что это такое:
http://msdn.microsoft.com/ru-r... .110).aspx
http://msdn.microsoft.com/ru-r... 34416.aspx - вот тут по поиску на странице "GIF" получим 5 свойств, начиная с PropertyTagFrameDelay ... короче, что-то похожее, т.к. связано и с временем.

Не может быть так, что эти метаданные к каждому кадру имеются, а не к анимации в целом?
0
834 / 642 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
13.01.2015, 23:45 17
Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
Не может быть так, что эти метаданные к каждому кадру имеются, а не к анимации в целом?
Скорее всего так. Я помню, что в gimp'е для анимированных гифок задержка писалась в скобках у имён слоёв. Т. е. задержка может быть разной для разных кадров.
0
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
14.01.2015, 09:11 18
Цитата Сообщение от Qwertiy Посмотреть сообщение
задержка может быть разной для разных кадров
ну это да. Проверил в ArtCursors - там можно время для каждого слайда назначить индивидуально.
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
15.01.2015, 19:45  [ТС] 19
Вобщем ответ на свой вопрос я нашел и реализовал. Финальный пример во вложении. В нем именно то что я хотел сделать в своей программе. А именно при наводе мышкой на кнопку или другй элемент с картинкой, красиво и плавно проигрывалась какая то анимация, например раскрытие книжки или открытие крышки у корзины(кнопка удаления) затем при отводе мышки с нее, так же красиво и плавно закрывалась в обратном порядке... конечно можно было сделать два изображения и вызывать их соответственно, но а если книга еще не успела раскрыться и вы вдруг мышку убрали. Она б резко появлялась уже открытой и начала закрываться.
вобщем в примере все понятно. Плюс подумал что можно использовать GIF файл как контейнер для изображений, с возможность менять интерфейс, выбрав нужный, заранее скомпонованный файл, при том что размеры фрэймов могут быть разными...

Добавлено через 48 секунд
Юпатов Дмитрий, мне кажется что всетаки какое то свойство за задержку отвечает

Добавлено через 27 минут
Блин. Косяк. Не получает прикрепить файл ((
0
Модератор
Эксперт .NET
4317 / 3391 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
15.01.2015, 21:47  [ТС] 20
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Урааа. Свершилось чудо. Я его прикрепил )))
Вложения
Тип файла: zip Готовое решение моего вопроса!.zip (467.6 Кб, 304 просмотров)
5
15.01.2015, 21:47
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2015, 21:47
Помогаю со студенческими работами здесь

Task. Resume & Pause
Кто нибудь сталкивался? имеется ли в процессе, пауза и resume ? если да то как можно их сделать....

Не работает pause и resume в плеере
package display; import java.awt.EventQueue; import javax.swing.JFileChooser; import...

Jlayer library. Pause and Resume
Здравствуйте! Вопрос к тем, кто работал с библиотекой JLayer! В общем, с горем пополам я сделал...

Pause и Resume в Parallel.Foreach
Сделал пробный проект, в котором идет просто вывод переменной из List<int>. При нажатии на кнопку...

Чтение файла GIF. Перевод текста в HEX. Декодирование GIF анимации
Всем привет.. задача такая: Необходимо открыть файл GIF.. Например, как в этой статье про...

Посоветуйте I/O для GIF анимации
Считывать набор картинок из gif у меня получилось но на этом мои успехи кончились...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru