Отобразить GIF в приложении WP7 с помощью Silverlight
Я хотел бы отобразить gif в своем приложении WP7. Есть ли способ достичь этого?
Я пробовал этот http://imagetools.codeplex.com/, но не могу заставить его работать с WP7.
Заранее благодарю за любую помощь
- Расчет расстояния между двумя широтами и долготами GeoCoordinates
- Как получить доступ к определенному элементу в списке с помощью DataTemplate?
- Как я могу привязать данные строк к ListBox в WPF / WP7?
- Десериализация JSON с использованием JSon.NET с динамическими данными
- Какие протоколы URI существуют в Windows Phone 8?
- Как программно установить выбранный элемент Panorama в WP7
- Как инициировать событие при изменении значения переменной?
- Закройте приложение WP7 программно?
- Преобразование изображения в base64
- "UpdateSourceTrigger = PropertyChanged" эквивалент для Windows Phone 7 TextBox
- WP7 HttpWebRequest без кеширования
- Поддержка локальной базы данных Sql для телефона Windows 7
- Настройка заголовка User-Agent для запроса WebClient
Фактически, он работает, но ему не хватает документации.
После некоторых проблем, вот как его использовать:
- ссылка ImageTools
- ссылка ImageTools.Controls
- ссылка ImageTools.IO.Gif
Добавьте пространство имен в xaml:
xmlns:imagetools="clr-namespace:ImageTools.Controls;assembly=ImageTools.Controls"
И ресурсы:
Затем используйте управление с преобразователем:
Ваш ImageSource должен быть Uri, например:
ImageSource = new Uri("http://sofru.miximages.com/silverlight/my.gif", UriKind.Absolute);
Не забудьте добавить декодированные:
ImageTools.IO.Decoders.AddDecoder();
Посмотрите здесь сообщение Джейми Родригеса об использовании GIF с WP7. Он использует проект ImageTools из CodePlex.
http://blogs.msdn.com/b/jaimer/archive/2010/11/23/working-with-gif-images-in-windows-phone.aspx
Я изо всех сил пытался заставить принятый ответ работать. Следующее решение для меня показало статический gif.
public ImageResponse(string imageUrl) { InitializeComponent(); ImageTools.IO.Decoders.AddDecoder(); var imageResponse = new ExtendedImage(); imageResponse.UriSource = new Uri(imageUrl); imageResponse.LoadingCompleted += this.ImageResponseLoadingCompleted; } private void ImageResponseLoadingCompleted(object sender, EventArgs e) { var imageResponse = (ExtendedImage)sender; Classes.Util.UiThread.Invoke(() => { this.ImageResponse.Source = imageResponse.ToBitmap(); }); }
Classes.Util.UiThread – это вспомогательный class, который я использую для вызова streamа пользовательского интерфейса
this.ImageResponse – это стандартный контроль изображения
Это анимированный GIF? Если нет, я бы попытался преобразовать GIF в другой поддерживаемый формат файла, прежде чем использовать его в вашем приложении.
WP7 Silverlight поддерживает JPG / PNG.
Согласно http://msdn.microsoft.com/en-us/library/ff462087(VS.92).aspx элемент управления Silverlight не поддерживает файлы GIF.
Используя ImageTools, вы конвертируете GIF-файл в другое место на лету на устройстве. Если вы используете gif-файлы, которыми вы управляете (т. Е. Вы связываете их в XAP или они поступают с вашего веб-сервера.), Вы должны использовать преобразованные версии этих файлов.
Это будет означать, что приложение должно делать меньше.
Эффект стука:
1. Вам придется писать меньше кода.
2. Приложению придется делать меньше работы, и поэтому будет работать немного лучше.
Конечно, это не касается анимированных GIF. Для этого вам нужно использовать другой подход.