在Windows Phone中如何显示GIF图片

junwong 发布于 2012/08/16 17:56
阅读 4K+
收藏 16
话说前几天我一个朋友跟我谈到一个特别的需求,想从Web上下载GIF图片过来然后在Windows phone 上显示。我们都知道Silverlight与Windows Phone都是不支持GIF图像格式的。如果你尝试去下载gif图片然后在Image控件上显示,你将会得到一个异常。

所以我在网络上找到了 ImageTools 库,这是个包含多种图像格式转换器的第三方库,其中就支持针对GIF格式的图像转换。
使用方式:
首先为你的项目添加此库的引用,如下图,我们使用NuGet来获取ImageTools


为了达成我们的目标,这里需要两个部件:
1,AnimatedImage,它将替换掉标准的 Silverlight ImageControl。
2,ImageConverter,完成图片格式的转换。

这两个对象都是 ImageTools.Controls 命名空间下的,所以在XAML中也要申明命名空间
<phone:PhoneApplicationPage.Resources>
    <imagetools:ImageConverter x:Key="ImageConverter" />
</phone:PhoneApplicationPage.Resources>


一旦已经引入了命名空间,那么就能将 converter 作为页面资源添加进来,如下代码所示
代码

当然如果希望这个converter能够在整个项目都能使用,那么你可以在 App.xaml 文件的 Application.Resources 节点添加此元素。

好了,现在可以在页面添加AnimatedImage控件了,这里可以将控件的 Source 属性绑定为 Uri 对象,然后设置好 Image Converter 的引用。如下:
<StackPanel>
    <imagetools:AnimatedImage x:Name="Image" Source="{Binding Path=ImageSource, Converter={StaticResource ImageConverter}}" />
</StackPanel>


然后将 ImageSource 属性在后台C#代码中进行如下设定。
ImageSource = new Uri("http://www.nonstopgifs.com/animated-gifs/games/games-animated-gif-002.gif", UriKind.Absolute);


最后我们在页面的构造方法中添加这样一行代码来支持GIF解码的功能。
public MainPage()
{
    InitializeComponent();
    ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
}



好了,编译一遍然后运行,你肯定能看到运动起来的GIF图片

原文链接 , OSChina.NET 原创翻译
加载中
0
意点忆滴
从隔离存储空间读出来的文件呢?
0
亚林瓜子
亚林瓜子
昨天搞android的gif搞了一天
0
李恒哲
李恒哲
同问  如何打开隔离存储空间的gif图片
0
xiejianxing
xiejianxing
ImageSource =newUri( http://www.nonstopgifs.com/animated-gifs/games/games-animated-gif-002.gif,  这句是不是有问题!ImageSource属性哪里来的!
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部