WP8动画Gif支持

时间:2013-09-30 05:38:55

标签: c# windows-phone-8 windows-phone gif animated-gif

我一直在尝试在我的应用上显示动画gif(c#+ xaml)。 Here由于WP8支持gif格式,为什么我的gif不可见。知道如何进行animated gif运行吗?

3 个答案:

答案 0 :(得分:2)

大多数应用使用ImageTools库。这是一个记忆力,但它的工作原理。或者,您可以尝试在应用程序中嵌入WebBrowser控件并加载动画gif。

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

答案 1 :(得分:1)

另一个选项就像您不想添加依赖项一样,是修改图像,使每个帧按宽度方式顺序存在,并且一次只显示每个帧。所以在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中的剪辑。

答案 2 :(得分:1)

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

与ImageTools不同,它的内存效率非常高,因为它只会动态解码当前帧并丢弃前一帧(但它可能会占用更多的CPU)