Отображаем анимированный GIF под Windows Mobile

Как-то печально обстоят дела с отображением анимации на устройствах под управлением Windows Mobile. Искал решение на .NET Compact Framework, нашел на Stack Overflow. Там предлагают писать собственный контрол, который будет делить изображение на кадры и отображать их с заданной периодичностью. Там в ответах ссылка на статью в MSDN. Собственно, везде это решение рекомендуют, но мне оно как-то не очень понравилось ввиду того, что позволяет отображать только специально подготовленное изображение, что во многих случаях очень неудобно.
А вот для тех, кто пишет ПО для Windows Mobile на C++ с wxWinCE эта проблема решается намного проще, с помощью wxAnimationCtrl. Вобще никаких лишних телодвижений делать не надо:
void wxAnimateMobileMainFrame::OnOPENClick( wxCommandEvent& event ) { wxFileDialog * dlg = new wxFileDialog(this, wxFileSelectorPromptStr, wxEmptyString, wxEmptyString, _("GIF Files (*.gif)|*.gif")); if(dlg->ShowModal() == wxID_OK) { m_AnimationCtrl->LoadFile(dlg->GetPath()); m_AnimationCtrl->Play(); } dlg->Destroy(); }
Из полезных возможностей:
- Загрузка GIF-изображений с любым количеством кадров
- Поддержка различных интервалов задержки для различных кадров
- Циклическое воспроизведение (прописывается в самом GIF-файле)
Оказывается, все-таки, для некоторых задач C++ пользовать удобнее (хотя все равно для меня остается загадкой почему в .NET CF этого функционала нет).
Исходный код примера можно загрузить здесь.
Еще интересные посты о программировании для мобильных устройств:
- DialogBlocks – Странный, но очень удобный способ создания интерфейса пользователя для Windows Mobile
- Кросс-платформенная разработка — Windows Mobile и Windows (.NET Compact Framework, C#)
- Учимся скачивать файлы программно в Windows Mobile
- Новые статьи по разработке для Windows Mobile на MSDN
- Работаем с журналом звонков в Windows Mobile
3 Comments
Make A CommentComments RSS Feed TrackBack URL
December 20th, 2008 at 00:28
под мобайл/СЕ успешно работает GDI+ которое умеет парсить гифы, так что написать свой контрол который показывает гифы не составит труда… или вы думаете вх либа по другому как-то работает?
З.Ы. можно и ручками распарсить
December 20th, 2008 at 01:16
Ммм? Оно действительно работает по-другому как-то, точнее, загружает GIF-файлы с помощью своего Image Handler’а (который не только под Win работает), а потом wxAnimationCtrl по таймеру их руками-то и отображает, только в отличии от предложенного для .NET CF варианта с константным интервалом таймера, там интервал берется для каждого кадра из файла как прописано, т.е. более “правильный” вариант получается.
December 20th, 2008 at 09:14
в любом случае оно прасит анимириованный-гиф файл, иначе никак, в net CF или просто поленились это сделать или посчитали что это можно сделать и самому (я склоняюсь ко 2-му варианту), кстати и в .NET анимированный гифы вроде не работают