【发布时间】:2013-10-05 21:32:15
【问题描述】:
我一直在尝试在我的应用程序 (c# + xaml) 上显示动画 gif。 Here 鉴于 WP8 支持 gif 格式,那么为什么我的 gif 不可见。知道如何让animated gif 运行吗?
【问题讨论】:
标签: c# windows-phone-8 windows-phone gif animated-gif
我一直在尝试在我的应用程序 (c# + xaml) 上显示动画 gif。 Here 鉴于 WP8 支持 gif 格式,那么为什么我的 gif 不可见。知道如何让animated gif 运行吗?
【问题讨论】:
标签: c# windows-phone-8 windows-phone gif animated-gif
我刚刚发布了一个新库,用于在 WPF、Windows 8.1 和 Windows Phone 8.1 上显示动画 GIF:https://github.com/XamlAnimatedGif/XamlAnimatedGif
与 ImageTools 不同,它非常节省内存,因为它只动态解码当前帧并丢弃前一帧(不过它可能更占用 CPU 资源)
【讨论】:
如果您不想添加依赖项,另一个选项是修改图像,以便每个帧按顺序存在宽度方式,并且一次只显示每个帧。所以在 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 中的剪辑。
【讨论】:
大多数应用都使用ImageTools 库。这是一个记忆猪,但它的工作原理。或者,您可以尝试在您的应用中嵌入 WebBrowser 控件并让它加载动画 gif。
应用程序 Baconography 是迄今为止我听说的唯一使用自定义 GIF 渲染器的 WP8 应用程序。该应用程序是开源的,但我不知道他们的许可证是否允许您在自己的应用程序中重用代码。 https://github.com/Synergex/Baconography
【讨论】: