GIF画像を表示させる 

Windows PhoneのSilverlightアプリケーションで提供されているAPIでは、PNGとJPEGしか扱うことが出来ませんが、Codeplexで配布されているオープンソースのライブラリ「.NET Image Tools」を使用することで、GIFファイルを表示させることが出来ます。

右にダウンロードページへのリンクがありますので、ダウンロードしておいてください。執筆時点の最新ビルドのv0.3での使用方法についてご説明させて頂きます。


ビルド済みのアセンブリファイルがRARファイルで提供されているので、任意のフォルダに解凍しておきましょう。解凍するとビルド済みのWindows Phone向けのdllアセンブリが「bin\Phone」フォルダに格納されています。

GIF画像をデコード(表示)するのに必要なdllアセンブリは以下の7ファイルです。

  • ImageTools.dll
  • ImageTools.Utils.dll
  • ImageTools.IO.Png.dll
  • ImageTools.IO.Gif.dll
  • ICSharpCode.SharpZLib.Phone.dll
  • PhoneCodeContractsAssemblies.dll
  • SharpZipLib.WindowsPhone7.dll

これらのファイルを自前のプロジェクトのフォルダに追加しておきます。ソリューション エクスプローラーにてプロジェクトを右クリックして、コンテキストメニューを表示します。メニューから[参照の追加]を選択します。参照の追加ダイアログから上記のファイルを選択し、[OK]ボタンをクリックして参照の追加をおこないます。

アプリケーションリソースのGIFファイルのストリームを読み出して、BitmapImageオブジェクトのソースにデコードしたストリームを設定します

// 読み込む画像のファイル名
var uri = new Uri("image01.gif", UriKind.Relative);
 
var bmp = new BitmapImage();
using (var strm = Application.GetResourceStream(uri).Stream) {
    // ImageToolsを使用してGIFファイルをデコードする
    ExtendedImage image = new ExtendedImage();
    var decoder = new GifDecoder();
    decoder.Decode(image, strm);
 
    // デコードしたストリームをBitmapImageのソースとする
    bmp.SetSource(image.ToStream());
}
 
// Imageコントロールのソースに設定する
image1.Source = bmp;

シンプルなコードですが、以上でGIF画像をデコードして表示させることが出来ました。