答案 0 :(得分:19)
事实上, 它工作正常,但缺少一些文档。
经过一些麻烦后,以下是如何使用它:
在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>();
答案 1 :(得分:3)
查看Jamie Rodriguez的帖子,了解如何在WP7上使用GIF。他使用CodePlex的ImageTools项目。
http://blogs.msdn.com/b/jaimer/archive/2010/11/23/working-with-gif-images-in-windows-phone.aspx
答案 2 :(得分:2)
我努力让接受的答案奏效。以下解决方案适用于我显示静态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是一个标准的图像控件
答案 3 :(得分:1)
它是动画GIF吗?如果没有,我会尝试将GIF转换为其他支持的文件格式,然后再在您的应用中使用。
答案 4 :(得分:1)
WP7 Silverlight支持JPG / PNG。
答案 5 :(得分:1)
根据http://msdn.microsoft.com/en-us/library/ff462087(VS.92).aspx,Silverlight图像控件不支持GIF文件。
通过使用ImageTools,您可以将GIF文件转换为设备上的其他内容。如果您使用的是您可以控制的gif文件(即您将它们捆绑在XAP中,或者它们来自您的Web服务器。)您应该使用这些文件的转换版本。
这意味着应用程序必须做得更少
敲门效应是:
你必须少写代码
2.该应用程序将不得不做更少的工作,因此会稍微好一点。
当然,这不包括动画GIF。对于这些,您需要使用不同的方法。