Отображаем анимированный 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 этого функционала нет).
Исходный код примера можно загрузить здесь.