2013-01-06 10 views
5

Potrzebuję wyświetlić animowany GIF w mojej aplikacji metra, ale nie mogę znaleźć żadnej kontroli, która na to pozwala. (Próbowałem Image, MediaElement i MediaPlayer od Gracza Framework)WinRT - Wyświetl animowany GIF w formancie

Czy jest możliwe jakoś wyświetlanie animowanego GIF?

Odpowiedz

3

Chociaż nie sprawdziłem, czy działa i może nie działać dla ciebie z powodu problemów z przestrzenią powietrzną - możesz spróbować hostować swój gif w formancie WebView. To może być o wiele łatwiejsze niż lepsze rozwiązania proponowane przez Norberta i Carla.

+0

To zadziałało :) Najpierw wykrywam wymiary gifu, a następnie ustawiam wysokość i szerokość odsłon do wartości dodanej za pomocą 20, aby uniknąć przewijania pasków. Następnie wystarczy ustawić źródło widoku internetowego na gif i działa :) – Jesse

+0

Rozważ przejście na WebViewBrush. To powinno dać ci lepszą wydajność –

3

Właśnie wydałem bibliotekę do odtwarzania animowanych GIFów: XamlAnimatedGif. Trzeba tylko ustawić załączony właściwość na standardowym Image sterowania:

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

(mapowanie xmlns jest xmlns:gif="using:XamlAnimatedGif")

w pracach nad WPF, Windows 8.1 i Windows Phone 8.1

0

As @Filip Skakun powiedział, że działa metoda WebView. Pewnie, że to "hack", ale wszystkie te biblioteki i dekodowanie w locie jest wolne, animacja migocze (przynajmniej w telefonie Windows). Korzystanie z WebView daje możliwość hostowania animowanych gifów z przezroczystym tłem. Aby korzystać Webview podejście renderowania gif stworzyć stronę HTML w projekcie:

<!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 jest ważne - ponieważ wyłącza zoom/przewijanie/dotykowy ruch WebView (co nie jest pożądane w większości przypadków). Dodaj animowane gify do tego samego folderu (gdzie siedzi HTML). Kod XAML:

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

Jedyną wadą jest to, że „stracić gesty” na obszarze, który WebView zajmować (i nie można używać WebViewBrush bo tracisz animacji).

Powiązane problemy