Dec
08

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

Google Buzz

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

Исходный код примера можно загрузить здесь.

Еще интересные посты о программировании для мобильных устройств:

3 Comments

Make A Comment
  • a gravatarDaBEAT Said:

    под мобайл/СЕ успешно работает GDI+ которое умеет парсить гифы, так что написать свой контрол который показывает гифы не составит труда… или вы думаете вх либа по другому как-то работает?

    З.Ы. можно и ручками распарсить

  • a gravatar T-Rex Said:

    Ммм? Оно действительно работает по-другому как-то, точнее, загружает GIF-файлы с помощью своего Image Handler’а (который не только под Win работает), а потом wxAnimationCtrl по таймеру их руками-то и отображает, только в отличии от предложенного для .NET CF варианта с константным интервалом таймера, там интервал берется для каждого кадра из файла как прописано, т.е. более “правильный” вариант получается.

  • a gravatarDaBEAT Said:

    в любом случае оно прасит анимириованный-гиф файл, иначе никак, в net CF или просто поленились это сделать или посчитали что это можно сделать и самому (я склоняюсь ко 2-му варианту), кстати и в .NET анимированный гифы вроде не работают

Comments RSS Feed   TrackBack URL

Leave a comment

Please leave these two fields as-is:
Удалённый рабочий стол (аренда) - сервера hp . Серверы HP Proliant ML. ; Мягкая мебель и диваны: купить мебель кухню . ; Грудной ребенок молочница .

top