实际上它是可行的,但缺少一些文档。
在一些困难后,以下是如何使用它:
在 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>();
请查看Jamie Rodriguez在此处发布的有关在WP7中使用GIF的帖子。他使用来自CodePlex的ImageTools项目。
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<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是我使用的帮助类,用于调用UI线程。
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中或来自您的Web服务器),则应该使用这些文件的转换版本。
这意味着应用程序需要做更少的工作。
影响是:
1. 您需要编写更少的代码。
2. 应用程序需要做更少的工作,因此性能会略有提高。
当然,这并不包括动画GIF。对于这些,您需要使用不同的方法。