![]() |
![]() ![]() ![]() ![]() |
|
Извлечение индексов кадров и определение состояния анимации в TGIFImageDelphi , Мультимедиа , МикрофонTGIFImage с анимацией GIF - события не работают - как обнаружить прогресс анимации? При использовании Delphi's TGIFImage для отображения анимированных GIF изображений, вы можете столкнуться с проблемой, когда события, такие как OnPaint, OnAfterPaint, OnLoop и OnEndPaint, не вызываются во время воспроизведения анимации. В этом руководстве мы рассмотрим, как извлечь текущий индекс видимого кадра, определить, когда анимация завершена, и обнаружить, когда следующий кадр будет отображаться, используя альтернативный подход с TGIFRenderer. Проблема: Delphi's TGIFImage имеет события OnPaint, OnAfterPaint, OnLoop и OnEndPaint, но они не вызываются при воспроизведении анимированного GIF. При использовании следующего кода для отображения анимированного GIF:
Невозможно извлечь текущий индекс видимого кадра, определить, когда анимация завершена, или обнаружить, когда следующий кадр будет отображаться. Событие OnProgress вызывается только во время первого цикла анимации, и после последнего кадра анимации TGIFImage продолжит анимацию с первого кадра, но это событие перестает работать. Решение: Большинство событий, которые вы упомянули, не реализованы, хотя и есть места для них. Кажется, они отсутствуют уже около десяти лет, когда был произведен значительный ремонт в модуле GifImg. Однако с помощью другого подхода вы можете решить эти проблемы, объявив отдельно TGIFRenderer, что дает вам доступ к необходимой информации. Пример приложения:
Используя TGifRenderer.FrameIndex, TGifImage.Images.Count и TGifRenderer.FrameDelay, вы можете рассчитать ответы на ваши вопросы. В заключение, хотя события в TGIFImage не работают при воспроизведении анимации, вы можете использовать альтернативный подход с TGIFRenderer для извлечения индексов кадров и определения состояния анимации. При использовании Delphi's TGIFImage для отображения анимированных GIF изображений, события, такие как OnPaint, OnAfterPaint, OnLoop и OnEndPaint, не вызываются во время воспроизведения анимации. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||