2013-01-06 6 views
5

Ho bisogno di visualizzare una GIF animata nella mia app metropolitana, ma non riesco a trovare alcun controllo che consenta. (Ho provato Image, MediaElement e MediaPlayer dal Framework Player)WinRT - Visualizza GIF animata in un controllo

È possibile in qualche modo visualizzare una GIF animata?

risposta

3

Mentre non ho controllato se funziona e potrebbe non funzionare per voi a causa di problemi di spazio aereo - si potrebbe provare ad ospitare la gif in un controllo WebView. Potrebbe essere molto più semplice delle soluzioni altrimenti migliori proposte da Norbert e Carl.

+0

Che ha funzionato :) Prima di tutto sto rilevando le dimensioni della gif e quindi impostando l'altezza e la larghezza delle visualizzazioni web con quella aggiunta con 20 per evitare le barre di scorrimento. Quindi imposta la sorgente della visualizzazione web su gif e funziona :) – Jesse

+0

Valuta l'opportunità di passare a WebViewBrush. Questo dovrebbe darti prestazioni migliori –

3

Ho appena rilasciato una libreria per riprodurre GIF animate: XamlAnimatedGif. Hai solo bisogno di impostare una proprietà associata su uno standard di controllo Image:

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

(la mappatura xmlns è xmlns:gif="using:XamlAnimatedGif")

nelle opere di WPF, Windows 8.1 e Windows Phone 8.1

0

Come @Filip Skakun ha detto che il metodo WebView funziona. Certo è "hack" ma tutte queste librerie e decodifiche al volo sono lente, sfarfallio delle animazioni (almeno in windows phone). L'uso di WebView ti dà la possibilità di ospitare gif animate con sfondo trasparente. Per utilizzare WebView gif approccio resa generazione pagina html nel progetto:

<!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 è importante - perché disabilita zoom/scorrimento/touch-move di WebView (che non è auspicabile nella maggior parte dei casi). Aggiungi gif animate alla stessa cartella (dove si trova html). XAML:

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

L'unico inconveniente è che si "perde gesti" sulla zona che WebView occupano (e non è possibile utilizzare WebViewBrush perché si perderebbe animazione).