|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.08.2013, 07:39 | #1 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
RichView + Png = Анимация
Здравствуйте. Помогите пожалуйста определится с методом реализации такой задачи. Имеется RichView, и пакеты PNG изображений. Нужно каким-то образом вывести на RichView анимированное цикличное изображение, состоящее из этих PNG картинок. Вариант с компиляцией GIF не подошёл, так как у GIF нет альфаканала. Выводить по таймеру слишком накладно, десяток анимашек повесят проект (хотя этот вариант у меня ещё под вопросом. Надо попробовать). Есть какие-то ещё варианты создания анимации именно на RichView? Прилагаю к моему вопросу пример пакета графики, чтоб было ясно, с какими картинками я работаю.
|
06.08.2013, 15:06 | #2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
GIF не поддерживает альфа-канал, но поддерживает цвет "прозрачности".
Нарисуйте все фреймы GIF'а с нужным цветом прозрачности и установите этот цвет у RichView. Все. Что за оно, не знаю, т.к. почти не пользуюсь сторонними компонентами. |
06.08.2013, 17:04 | #3 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Это одно-битный цвет. То есть либо есть прозрачность, либо её нет (1 бит вместо восьми). На практике смотрится удручающе. Так что предложенный вами вариант мне не подходит.
|
06.08.2013, 17:26 | #4 |
Пользователь
Регистрация: 01.02.2011
Сообщений: 33
|
Чем конкретно не устраивают таймеры? Не лучший вариант конечно, и все же.
Еще как вариант вечно цикличный поток с интервалом (sleep) можно сделать. |
06.08.2013, 18:51 | #5 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
В момент исполнения кода таймера происходит замена изображения в контейнере PNG. Это вызывает мерцание картинки. Для sleep нужен отдельный поток. Проще уж таймерами. Вопрос только как обновлять картинку, чтоб она не мерцала? Так же я заметил, что анимированные колобки (смайлы) прекрасно отображаются на риче. Но к сожалению я не смог повторить алгоритм компиляции такого GIF. Получил только однобитную прозрачность.
Последний раз редактировалось doktor255; 06.08.2013 в 18:55. |
06.08.2013, 20:52 | #6 |
Пользователь
Регистрация: 01.02.2011
Сообщений: 33
|
Буферизация включена?
|
06.08.2013, 22:33 | #7 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Reimscher, по большей части необходима реализация собственной буферизации.
|
06.08.2013, 22:49 | #8 |
Пользователь
Регистрация: 01.02.2011
Сообщений: 33
|
Эх, да, чем глубже погружаюсь во все это, тем больше понимаю что если хочешь что б что-то работало как надо - делай всё (в полном смысле этого слова) сам...
Посмотрим как проблему решит автор. |
07.08.2013, 09:28 | #9 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Помогла буферизация (RichView1.DoubleBuffered). Я изначально про неё думал, но забыл как правильно она называется, и не мог найти. Сейчас включил, отрисовывает плавно даже на высоком тайминге. Придётся переписывать код под динамические таймеры, массивы изображений и прочую ерунду. Этот вопрос закрыт. Спасибо всем кто мне помог.
Последний раз редактировалось doktor255; 07.08.2013 в 13:22. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
RichView | Pasha_Sh | Компоненты Delphi | 3 | 07.06.2010 13:57 |
Ковертирование из png 24 бит в png 8 бит | isat | Общие вопросы .NET | 0 | 22.03.2010 13:38 |
RichView | Pavelok | Общие вопросы Delphi | 2 | 20.03.2010 18:00 |
RichView | Pavelok | Помощь студентам | 1 | 18.03.2010 20:10 |