Отобразить GIF в приложении WP7 с помощью Silverlight
Я хотел бы отобразить gif в своем приложении WP7.
Есть ли способ достичь этого?
Я пробовал этот http://imagetools.codeplex.com/, но не могу заставить его работать с WP7.
Заранее благодарим за помощь
Ответы
Ответ 1
Фактически,
он работает, но ему не хватает документации.
После некоторых проблем, вот как это использовать:
- ссылка ImageTools
- ссылка ImageTools.Controls
- ссылка ImageTools.IO.Gif
Добавить пространство имен в xaml:
xmlns:imagetools="clr-namespace:ImageTools.Controls;assembly=ImageTools.Controls"
И ресурсы:
<phone:PhoneApplicationPage.Resources>
<imagetools:ImageConverter x:Key="ImageConverter" />
</phone:PhoneApplicationPage.Resources>
Затем используйте управление с преобразователем:
<imagetools:AnimatedImage Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}" />
Ваш ImageSource должен быть Uri, например:
ImageSource = new Uri("http://mysite/my.gif", UriKind.Absolute);
Не забудьте добавить декодированные:
ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
Ответ 2
Зайдите в Jamie Rodriguez здесь, используя GIF с WP7. Он использует проект ImageTools из CodePlex.
http://blogs.msdn.com/b/jaimer/archive/2010/11/23/working-with-gif-images-in-windows-phone.aspx
Ответ 3
Я изо всех сил пытался заставить принятый ответ работать. Следующее решение сработало для отображения статического gif.
public ImageResponse(string imageUrl)
{
InitializeComponent();
ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
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 - это вспомогательный класс, который я использую для вызова потока пользовательского интерфейса
this.ImageResponse - это стандартный контроль изображения
Ответ 4
Это анимированный GIF? Если нет, я бы попытался преобразовать GIF в другой поддерживаемый формат файла, прежде чем использовать его в вашем приложении.
Ответ 5
WP7 Silverlight поддерживает JPG/PNG.
Ответ 6
В соответствии с http://msdn.microsoft.com/en-us/library/ff462087(VS.92).aspx элемент управления Silverlight не поддерживает файлы GIF.
Используя ImageTools, вы конвертируете GIF файл во что-то еще на лету на устройстве. Если вы используете gif файлы, которыми вы управляете (т.е. Вы связываете их в XAP или они поступают с вашего веб-сервера.), Вы должны использовать преобразованные версии этих файлов.
Это означает, что приложение должно делать меньше.
Эффект стука в том, что:
1. Вам нужно будет написать меньше кода.
2. Приложению придется делать меньше работы, и поэтому будет работать немного лучше.
Конечно, это не касается анимированных GIF. Для этого вам нужно использовать другой подход.