Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2013, 07:39   #1
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию RichView + Png = Анимация

Здравствуйте. Помогите пожалуйста определится с методом реализации такой задачи. Имеется RichView, и пакеты PNG изображений. Нужно каким-то образом вывести на RichView анимированное цикличное изображение, состоящее из этих PNG картинок. Вариант с компиляцией GIF не подошёл, так как у GIF нет альфаканала. Выводить по таймеру слишком накладно, десяток анимашек повесят проект (хотя этот вариант у меня ещё под вопросом. Надо попробовать). Есть какие-то ещё варианты создания анимации именно на RichView? Прилагаю к моему вопросу пример пакета графики, чтоб было ясно, с какими картинками я работаю.
Вложения
Тип файла: rar m8b.rar (178.0 Кб, 13 просмотров)
doktor255 вне форума Ответить с цитированием
Старый 06.08.2013, 15:06   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

GIF не поддерживает альфа-канал, но поддерживает цвет "прозрачности".
Нарисуйте все фреймы GIF'а с нужным цветом прозрачности и установите этот цвет у RichView. Все. Что за оно, не знаю, т.к. почти не пользуюсь сторонними компонентами.
Человек_Борща вне форума Ответить с цитированием
Старый 06.08.2013, 17:04   #3
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Это одно-битный цвет. То есть либо есть прозрачность, либо её нет (1 бит вместо восьми). На практике смотрится удручающе. Так что предложенный вами вариант мне не подходит.
doktor255 вне форума Ответить с цитированием
Старый 06.08.2013, 17:26   #4
Reimscher
Пользователь
 
Регистрация: 01.02.2011
Сообщений: 33
По умолчанию

Чем конкретно не устраивают таймеры? Не лучший вариант конечно, и все же.
Еще как вариант вечно цикличный поток с интервалом (sleep) можно сделать.
Reimscher вне форума Ответить с цитированием
Старый 06.08.2013, 18:51   #5
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

В момент исполнения кода таймера происходит замена изображения в контейнере PNG. Это вызывает мерцание картинки. Для sleep нужен отдельный поток. Проще уж таймерами. Вопрос только как обновлять картинку, чтоб она не мерцала? Так же я заметил, что анимированные колобки (смайлы) прекрасно отображаются на риче. Но к сожалению я не смог повторить алгоритм компиляции такого GIF. Получил только однобитную прозрачность.

Последний раз редактировалось doktor255; 06.08.2013 в 18:55.
doktor255 вне форума Ответить с цитированием
Старый 06.08.2013, 20:52   #6
Reimscher
Пользователь
 
Регистрация: 01.02.2011
Сообщений: 33
По умолчанию

Буферизация включена?
Reimscher вне форума Ответить с цитированием
Старый 06.08.2013, 22:33   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Reimscher, по большей части необходима реализация собственной буферизации.
Человек_Борща вне форума Ответить с цитированием
Старый 06.08.2013, 22:49   #8
Reimscher
Пользователь
 
Регистрация: 01.02.2011
Сообщений: 33
По умолчанию

Эх, да, чем глубже погружаюсь во все это, тем больше понимаю что если хочешь что б что-то работало как надо - делай всё (в полном смысле этого слова) сам...
Посмотрим как проблему решит автор.
Reimscher вне форума Ответить с цитированием
Старый 07.08.2013, 09:28   #9
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Помогла буферизация (RichView1.DoubleBuffered). Я изначально про неё думал, но забыл как правильно она называется, и не мог найти. Сейчас включил, отрисовывает плавно даже на высоком тайминге. Придётся переписывать код под динамические таймеры, массивы изображений и прочую ерунду. Этот вопрос закрыт. Спасибо всем кто мне помог.

Последний раз редактировалось doktor255; 07.08.2013 в 13:22.
doktor255 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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