crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Работа с гиф анимацией
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Rocky Дата 15.3.2010, 9:39
  SABROG, спасибо но там точно баги. Я гуглил. Чтобы не тратить время просто свой класс написал на основе QLabel которому последовательность картинок передаю..
SABROG Дата 11.3.2010, 10:03
  Выложи проект, посмотрю.
Rocky Дата 11.3.2010, 8:28
  SABROG, я так пробовал... frameCount всегда возвращает 0. в слоте, соединенном с сигналом frameChanged параметр frameNumber всегда 0. Более того, если этот сигнал соединять, то вообще срывает стэк почемуто =)

Боюсь что поддержки гифоф так и нет... Ладно, напишу свой класс, которому буду просто кормить последовательность картинок...
SABROG Дата 10.3.2010, 23:42
  Узнай количество фреймов:

int QMovie::frameCount () const

и лови сигнал:

void QMovie::frameChanged ( int frameNumber ) [signal]

В слоте проверяй если frameNumber == frameCount(), то вызывай stop():

QTimer::singleShot(0, movie, SLOT(stop());

Чтобы movie успел проиграть последний фрейм и только после этого остановился. А finished() наверно никогда не придет, если в gif'ке стоит свойство играть по кругу.

Если даже frameCount() не будет работать, то максимальное количество фреймов всегда можно обновить в слоте на frameChanged() и если новое значение меньше старого, значит пошел второй круг.
kwisp Дата 10.3.2010, 21:58
  не делал.
посмотри баги может они так и остались.
Rocky Дата 10.3.2010, 21:28
  Ребят а с тех пор никто с гифками не работал? У меня щас 4.6.1.... а по ходу все тоже самое.. ( Как можно остановить анимацию когда последний кадр? я делал через QMovie... Походу сигнал finished не генерируется... А гифка так вечно и проигрывается, а нужно чтоб она один раз проиграла, и все... Блин(
kwisp Дата 29.5.2009, 16:03
  я бы сказал для гифа точно в классе
QGifHandler не перепопределены толком виртуальные функции предка QImageIOHandler
в остальных лень смотреть кому интересно в src/plugins/imageformats/ лежат дочерние классы в src\gui\image\ родитель QImageIOHandler

Цитата(igor_bogomolov @ 29.5.2009, 16:58) *
У QMovie loopCount () & frameCount () возвращают -1

странно в исходниках они вроде переопределены по своему .... хм..
ну да черт с ними точно. потому что посмотрел я на баги.... многовато их... надо почаще туда лазить а то так голову поломать можно.

P.S. кошара зачётная.
почитай там в юморе в непридуманных историях есть про кота как раз рассказик.
igor_bogomolov Дата 29.5.2009, 15:58
  kwisp, я переделал все на QMovie. Тож же самый функционал, потяжеловеснее только. Хотелось бы QImageReader обойтись. Да ну и черт с ним.

У QMovie loopCount () & frameCount () возвращают -1. Зато работает jumpToFrame и nextFrameDelaу.

Цитата(kwisp)
мда.... сразу мона было позырить сюда
Бага то старинная и приоритет высокий. Странно что до сих пор не пофиксили.
Litkevich Yuriy Дата 29.5.2009, 15:57
 
Цитата(kwisp @ 29.5.2009, 19:41) *
мда.... сразу мона было позырить
походу надо запостить в трекер более явно, что мол реализация отсутствует.
Т.к. запланировано на 4.1, может уже забыли.
kwisp Дата 29.5.2009, 15:41
  нашел где переопределяют imageCount
похоже либо бага либо недоделка либо я накосячил.

int QGifHandler::imageCount() const
{
    return 0; // Don't know
}

таж фигня вид сбоку и функция не виртуальная.

мда.... сразу мона было позырить
сюда

там вообще не только одна функция непереопределена штук 5 недоделаны.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 17:09