在Metro App中显示动画GIF

时间:2012-10-06 03:04:24

标签: c# windows-8 microsoft-metro

是否有控件在Windows 8中的Windows应用商店(Metro)应用中显示动画gif?我正在使用C#和XAML进行数据绑定。

6 个答案:

答案 0 :(得分:2)

图像控件不支持动画GIF。您需要提取帧并在自己的计时器上设置动画。

您应该查看此链接,该链接可能会对您的问题有所帮助:

http://advertboy.wordpress.com/2012/05/08/animated-gifs-in-xamlc/

答案 1 :(得分:2)

您无法在网格中显示动画gif。但是,您可以在 webview 控制器中显示动画礼物。

答案 2 :(得分:1)

仅供注意:您可以使用BitmapDecoder类来读取GIF帧,创建一个动画故事板。

我的博客上有一个Windows 8用户控件示例:http://www.henrikbrinch.dk/Blog/2013/02/21/Windows-8---GIF-animations--the-RIGHT-way

答案 3 :(得分:1)

我设法在我的windows 8 metro app中显示gif,只需将gif转换为jpegs然后运行无限循环。

代码如下:

public async void UpdateImage()         {

        await Task.Delay(300);

        var frame = this.Frame.CurrentSourcePageType.Name;

        if (frame != ("CURRENTFRAME")) return;
        if (count <= 4)
        {
            var img = (BitmapImage) Resources["bitmap" + count];
            imgTap.Source = img;
            UpdateLayout();
            count++;
            UpdateImage();
        }
        else
        {
            count = 1;
            UpdateImage();
        }
    }

所以基本上我将转换的jpeg保存在我的page.resources中,然后将它们命名为bitmap1,bitmap2 ..等等。 我检查当前帧是否是必须显示gif的帧,否则gif代码将在后台运行整个时间,这是浪费内存和CPU。 只需在任何一个Loaded方法上调用此方法,它就可以正常运行。

答案 4 :(得分:0)

这可能有些过分,但你可以尝试使用WebView来显示GIF。然而,WebView控件引入了一系列令人头疼的问题,所以除非你愿意处理这些令人头疼的问题,否则我建议你避免使用它,除非你绝对不得不使用它。

答案 5 :(得分:-1)

如果我是对的,那么Silverlight不支持GIF,Metro应用程序基于Silverlight平台。因此,本身不包含对GIF图像的支持。但是,您可以使用http://www.componentone.com/SuperProducts/ImageSilverlight/等第三方控件。