5

我需要在我的 Metro 应用程序中显示一个动画 GIF,但我找不到任何允许它的控件。(我试过了ImageMediaElement并且MediaPlayer来自播放器框架)

是否有可能以某种方式显示动画 GIF?

4

6 回答 6

4

您可以通过使用 .NET Framework 中的 BitmapDecoder 类本机实现此目的。我的博客上有一个例子,它展示了如何实现一个 AnimationControl,它能够显示来自资源 gif 文件的动画 GIF。查看:http ://www.henrikbrinch.dk/Blog/2013/02/21/Windows-8---GIF-animations--the-RIGHT-way

于 2013-03-05T19:10:35.800 回答
3

虽然我没有检查它是否有效,并且由于空域问题它可能对您不起作用 - 您可以尝试将您的 gif 托管在 WebView 控件中。这可能比 Norbert 和 Carl 提出的其他更好的解决方案要容易得多。

于 2013-01-07T07:22:09.777 回答
3

我刚刚发布了一个库来播放动画 GIF:XamlAnimatedGifImage您只需要在标准控件上设置附加属性:

<Image gif:AnimationBehavior.SourceUri="/Images/animated.gif" />

(xmlns 映射是xmlns:gif="using:XamlAnimatedGif"

在 WPF、Windows 8.1 和 Windows Phone 8.1 上工作

于 2014-10-09T23:31:45.553 回答
1

这不能在本地完成,但您可以查看

http://imagetools.codeplex.com/

你想要的。你也可以检查这个

http://blogs.msdn.com/b/jstegman/archive/2009/09/08/silverlight-3-sample-updates.aspx

其中包含一个 GIF 解码器库

于 2013-01-06T15:00:18.667 回答
1

在这里你有一个很好的教程如何将 gif 插入 Metro Style 应用程序:

http://advertboy.wordpress.com/2012/05/08/animated-gifs-in-xamlc/

但最简单的方法是使用这个项目:

http://imagetools.codeplex.com/

于 2013-01-06T15:56:48.113 回答
0

正如@Filip Skakun 所说的WebView方法有效。当然它是“黑客”,但所有这些库和动态解码都很慢,动画闪烁(至少在 Windows Phone 中)。使用 WebView 使您能够托管具有透明背景的动画 gif。要使用 WebView gif 渲染方法在您的项目中创建 html 页面:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>gif rendering</title>
    <script type="text/javascript">
        function SetImageSource(image, source) {
            document.getElementById(image).src = source;
        };
    </script>

<style type="text/css">
    html, body
    {
        -ms-content-zooming:none;
        -ms-overflow-style: none;
        -ms-scroll-translation: none;
        -ms-touch-select: none;
        overflow: hidden;
        zoom: 100%;
    }
</style>
</head>
<body>
<img id="gifPlaceholder" src=""/>

<script>
    SetImageSource("gifPlaceholder", window.top.location.search.substring(1));
</script>
</body>
</html>

CSS 很重要——因为它禁用了 WebView 的缩放/滚动/触摸移动(这在大多数情况下是不可取的)。将动画 gif 添加到同一个文件夹(html 所在的位置)。Xml代码:

<WebView Name="gifRendererWebView" 
         Source="ms-appx-web:///pathToHtmlInProject.html?gifName.gif"
         DefaultBackgroundColor="Transparent"/>

唯一的缺点是你在WebView占据的区域“失去了手势”(你不能使用WebViewBrush,因为你会失去动画)。

于 2014-10-19T10:58:08.017 回答