![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Извлечение индексов кадров и определение состояния анимации в 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 |