2013-01-06 2 views
5

J'ai besoin d'afficher un GIF animé dans mon application de métro, mais je ne trouve aucun contrôle qui le permet. (J'ai essayé Image, MediaElement et MediaPlayer à partir du Player Framework)WinRT - Afficher GIF animé dans un contrôle

Est-il possible d'afficher en quelque sorte un GIF animé?

Répondre

3

Bien que je n'ai pas vérifié si cela fonctionne et que cela pourrait ne pas fonctionner pour vous en raison de problèmes d'espace aérien, vous pouvez essayer d'héberger votre gif dans un contrôle WebView. Cela pourrait être beaucoup plus facile que les solutions autrement meilleures proposées par Norbert et Carl.

+0

Cela a fonctionné :) d'abord Je détecte les dimensions du gif puis régler la hauteur et la largeur de webviews à celle ajoutée avec 20 pour éviter les barres de défilement. Ensuite, il suffit de définir la source de la webview sur le gif et cela fonctionne :) – Jesse

+0

Envisager de passer à WebViewBrush. Cela devrait vous donner de meilleures performances –

3

Je viens de publier une bibliothèque pour lire des GIF animés: XamlAnimatedGif. Vous avez juste besoin de définir une propriété attachée sur un Image contrôle standard:

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

(la cartographie xmlns est xmlns:gif="using:XamlAnimatedGif")

Dans les travaux sur WPF, Windows 8.1 et Windows Phone 8.1

0

Comme @Filip Skakun a déclaré que la méthode WebView fonctionne. Bien sûr, c'est "hack" mais toutes ces bibliothèques et décodage à la volée sont lents, l'animation scintille (au moins dans Windows Phone). L'utilisation de WebView vous permet d'héberger des GIF animés avec un arrière-plan transparent. Pour utiliser l'approche de rendu WebView gif créer la page html dans votre projet:

<!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 est important - car il désactive le zoom/défilement/tactile mouvement de WebView (ce qui est souhaitable dans la plupart des cas). Ajouter des gifs animés au même dossier (où se trouve html). Code XAML:

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

Le seul inconvénient est que vous « perdre gestes » sur la zone qui WebView occupent (et vous ne pouvez pas utiliser WebViewBrush parce que vous perdriez l'animation).