代码之家  ›  专栏  ›  技术社区  ›  John Koerner

在Metro应用程序中显示动画GIF

  •  3
  • John Koerner  · 技术社区  · 12 年前

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

    6 回复  |  直到 12 年前
        1
  •  2
  •   Furqan Safdar    12 年前

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

    你应该看看这个链接,它可能会对你的问题有所帮助:

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

        2
  •  2
  •   anilbey    11 年前

    不能在网格中显示动画gif。但是,您可以在 网络视图 控制器。

        3
  •  1
  •   Henrik Brinch    11 年前

    请注意:您可以使用BitmapDecoder类读取GIF帧,创建故事板并为其设置动画。

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

        4
  •  1
  •   Bajju    10 年前

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

    代码如下:

    公共异步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();
            }
        }
    

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

        5
  •  0
  •   Akinwale    12 年前

    这可能有些过头了,但你可以尝试使用WebView来显示GIF。然而,WebView控件引入了自己的一系列令人头疼的问题,因此,除非您愿意处理上述头痛问题,否则我建议您避免使用它,除非您绝对必须使用它。

        6
  •  -1
  •   Milan Aggarwal    12 年前

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