【问题标题】:Animated Gif support for WP8对 WP8 的动画 Gif 支持
【发布时间】:2013-10-05 21:32:15
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • this.frame, width, frame的值是多少?
      • 抱歉,复制和粘贴时出错。我已经编辑了帖子。
      【解决方案3】:

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

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

      【讨论】:

      • 感谢您的回复。如果我没有得到更好的解决方案,我会将其标记为答案。
      猜你喜欢
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2011-02-09
      • 1970-01-01
      相关资源
      最近更新 更多