代码之家  ›  专栏  ›  技术社区  ›  Milan Aggarwal

WP8的动画Gif支持

  •  2
  • Milan Aggarwal  · 技术社区  · 11 年前

    我一直在尝试在我的应用程序(c#+xaml)上显示动画gif。 Here 既然WP8支持gif格式,那么为什么我的gif不可见。知道如何制作 animated gif

    3 回复  |  直到 11 年前
        1
  •  2
  •   Kevin Gosse    11 年前

    大多数应用程序使用 ImageTools 图书馆这是一个记忆猪,但它是有效的。或者,您可以尝试在应用程序中嵌入WebBrowser控件,并让它加载动画gif。

    到目前为止,应用程序Baconography是我听说过的唯一一个使用自定义GIF渲染器的WP8应用程序。该应用程序是开源的,但我不知道他们的许可证是否允许你在自己的应用程序中重复使用代码。 https://github.com/Synergex/Baconography

        2
  •  1
  •   Luke    9 年前

    另一个不想添加依赖项的选项是修改图像,使每个帧按宽度顺序存在,并且一次只显示每个帧。因此,在xaml中:

    <Canvas Grid.Column="0" Width="32" Height="32">
        <Image x:Name="Image" Source="/Resources/animation.gif">
            <Image.Clip>
                <RectangleGeometry Rect="0 0 32 32"></RectangleGeometry>
            </Image.Clip>
        </Image>
    </Canvas>
    

    在C#中,计时器只显示特定的帧:

    image.Clip = new RectangleGeometry {
                                           Rect =
                                               new Rect(
                                                   frame * width,
                                                   0,
                                                   width,
                                                   height)
                                               };
    Canvas.SetLeft(image, -1 * width * frame)
    

    其中,width是每个帧的宽度,height是图像的高度,frame是动画的当前位置。宽度和高度应该映射xaml中的剪辑。

        3
  •  1
  •   Thomas Levesque    9 年前

    我刚刚发布了一个新的库,用于在WPF、Windows 8.1和Windows Phone 8.1上显示动画GIF: https://github.com/XamlAnimatedGif/XamlAnimatedGif

    与ImageTools不同的是,它非常节省内存,因为它只在运行中解码当前帧并丢弃前一帧(不过可能会占用更多的CPU)