Windows 8のWindowsストア(Metro)アプリでアニメーションGIFを表示するためのコントロールはありますか?データバインディングでC#とXAMLを使用しています。
6 に答える
画像コントロールはアニメーションGIFをサポートしていません。フレームを抽出し、独自のタイマーでアニメーション化する必要があります。
あなたはあなたの質問に関してあなたを助けるかもしれないこのリンクを見てください:
http://advertboy.wordpress.com/2012/05/08/animated-gifs-in-xamlc/
アニメーションGIFをグリッドに表示することはできません。ただし、WebViewコントローラーでアニメーションギフトを表示することはできます。
注:BitmapDecoderクラスを使用してGIFフレームを読み取り、それらをアニメーション化したストーリーボードを作成できます。
ブログにWindows8ユーザーコントロールの例があります:http ://www.henrikbrinch.dk/Blog/2013/02/21/Windows-8 --- GIF-animations--the-RIGHT-way
gifをjpegに変換し、無限ループを実行するだけで、Windows8メトロアプリにgifを表示することができました。
コードは次のとおりです。
public async void UpdateImage(){
await Task.Delay(300);
var frame = this.Frame.CurrentSourcePageType.Name;
if (frame != ("CURRENTFRAME")) return;
if (count <= 4)
{
var img = (BitmapImage) Resources["bitmap" + count];
imgTap.Source = img;
UpdateLayout();
count++;
UpdateImage();
}
else
{
count = 1;
UpdateImage();
}
}
したがって、基本的には、変換されたjpegをpage.resourcesに保存し、bitmap1、bitmap2などの名前を付けます。現在のフレームがgifを表示する必要のあるフレームであるかどうかを確認しています。そうでない場合、gifコードがバックグラウンドで実行され、メモリとCPUの浪費になります。Loadedメソッドのいずれかでこのメソッドを呼び出すだけで、正常に実行されます。
これはおそらくやり過ぎですが、WebViewを使用してGIFを表示してみることができます。WebViewコントロールには独自の頭痛の種がありますが、そのような頭痛に対処する意思がない限り、絶対に使用する必要がない限り、それを避けることをお勧めします。
私が正しければ、SilverlightはGIFをサポートしておらず、MetroAppsはSilverlightプラットフォームに基づいています。したがって、GIF画像のサポートをネイティブに含めることはできません。ただし、 http://www.componentone.com/SuperProducts/ImageSilverlight/などのサードパーティのコントロールを使用できます。