题 使用Silverlight在WP7应用程序中显示GIF


我想在我的WP7应用程序中显示gif。 有没有办法实现这个目标?

我试过这个 http://imagetools.codeplex.com/ 但无法使其与WP7一起使用。

在此先感谢您的帮助


19
2017-11-11 08:33


起源




答案:


事实上, 它工作正常,但缺少一些文档。

经过一些麻烦,以下是如何使用它:

  • 参考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>();

19
2017-11-11 09:19



这会支持显示GIF动画吗? - SKandeel
是的,我刚尝试过;) - Krzysztof Kaczor
我似乎无法使这个工作,代码编译,但在运行时初始化期间抛出所有关于不兼容的绑定类型的异常。由于这篇文章大约有一年的历史,ImageTools库是否以与此不相容的方式更新? - Esko
我使用相同的概念显示gif图像。但是,有一段时间我得到这个错误“'ImageTools'的类型初始化程序引发了异常。”..如果你知道这个错误帮助我。 - Jeeva
在我的情况下它根本不起作用,它不是图像(stackoverflow.com/questions/9667840/...) - revolutionkpi


查看Jamie Rodriguez的帖子,在WP7上使用GIF。他使用CodePlex的ImageTools项目。

http://blogs.msdn.com/b/jaimer/archive/2010/11/23/working-with-gif-images-in-windows-phone.aspx


3
2017-12-25 16:29



我使用相同的概念显示gif图像。但是,有一段时间我得到这个错误“'ImageTools'的类型初始化程序引发了异常。”..如果你知道这个错误帮助我。 - Jeeva


我努力让接受的答案奏效。以下解决方案适用于我显示静态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是一个标准的图像控件 


2
2017-08-08 14:34





它是动画GIF吗?如果没有,我会尝试将GIF转换为另一种支持的文件格式,然后再在您的应用中使用它。


1
2017-11-11 08:34



它可以是GIF动画 - Tim


WP7 Silverlight支持JPG / PNG。


1
2017-11-11 08:37



是的,这就是为什么我在寻找一个外部的lib :) - Tim


按照 http://msdn.microsoft.com/en-us/library/ff462087(VS.92).aspx Silverlight图像控件不支持GIF文件。

通过使用ImageTools,您可以将GIF文件转换为设备上的其他内容。如果您使用的是您可以控制的gif文件(即您将它们捆绑在XAP中,或者它们来自您的Web服务器。)您应该使用这些文件的转换版本。

这意味着应用程序必须做得更少。
敲门效果是:
你必须编写更少的代码。
2.该应用程序将不得不做更少的工作,因此会稍微好一点。

当然,这不包括动画GIF。对于这些,您需要使用不同的方法。


1
2017-11-11 09:44



我刚检查了你给出的链接,它说所有设备都支持GIF(现在)。 - T3rm1
@ T3rm1好吧,这可能令人困惑。操作系统支持这4种格式(bmp,jpg,png和gif),因此您可以在电子邮件或网页上查看它们。但是,Silverlight仅支持JPG和PNG格式(请参阅备注 msdn.microsoft.com/en-us/library/...)。这意味着您无法直接在代码中使用GIF。 - Matt Lacey