我需要在我的地铁应用程序中显示动画GIF,但我找不到任何允许它的控件。 (我尝试了来自玩家框架的Image
,MediaElement
和MediaPlayer
)
是否有可能以某种方式显示动画GIF?
答案 0 :(得分:4)
您可以使用.NET Framework中的BitmapDecoder类本机实现此目的。我在我的博客上有一个例子,它展示了如何实现一个能够从ressource gif文件显示动画GIF的AnimationControl。查看:http://www.henrikbrinch.dk/Blog/2013/02/21/Windows-8---GIF-animations--the-RIGHT-way
答案 1 :(得分:3)
我刚刚发布了一个库来播放动画GIF:XamlAnimatedGif。您只需要在标准Image
控件上设置附加属性:
<Image gif:AnimationBehavior.SourceUri="/Images/animated.gif" />
(xmlns映射为xmlns:gif="using:XamlAnimatedGif"
)
适用于WPF,Windows 8.1和Windows Phone 8.1
答案 2 :(得分:1)
这不能原生,但你可以看看
http://imagetools.codeplex.com/
你可以做任何你想做的事。 你也可以看看这个
http://blogs.msdn.com/b/jstegman/archive/2009/09/08/silverlight-3-sample-updates.aspx
包含GIF解码器库
答案 3 :(得分:1)
这里有一个很好的教程如何将gif插入Metro Style App:
http://advertboy.wordpress.com/2012/05/08/animated-gifs-in-xamlc/
但最简单的方法是使用这个项目:
答案 4 :(得分:0)
正如@Filip Skakun所说,WebView
方法有效。当然它是“黑客”,但所有这些库和解码在飞行中都很慢,动画闪烁(至少在Windows手机中)。使用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所在的位置)。 Xaml代码:
<WebView Name="gifRendererWebView"
Source="ms-appx-web:///pathToHtmlInProject.html?gifName.gif"
DefaultBackgroundColor="Transparent"/>
唯一的缺点是你在WebView
占据的区域“丢失手势”(你不能使用WebViewBrush
,因为你会丢失动画)。