2

我一直在尝试在我的应用程序(c# + xaml)上显示动画 gif。鉴于 WP8 支持 gif 格式,那么为什么我的 gif 不可见知道如何animated gif跑步吗?

4

3 回答 3

2

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

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

于 2013-09-30T06:00:02.943 回答
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 中的剪辑。

于 2014-01-08T06:20:30.277 回答
1

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

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

于 2014-10-09T23:52:13.290 回答