SilverlightではGIFが使えません。PNGに変換しようとしたのですが、数が多くてアニメーションGIFが混ざっていたため、GDI+(System.Drawing)で情報を取得して変換しました。変換部分のコードは以下の通りです。
private void GifToPng(string gif) { var fn = Path.Combine(Path.GetDirectoryName(gif), Path.GetFileNameWithoutExtension(gif)); var bmp = new Bitmap(gif); var fd = new FrameDimension(bmp.FrameDimensionsList[0]); int count = bmp.GetFrameCount(fd); if (count == 1) bmp.Save(fn + ".png", ImageFormat.Png); else { var pi1 = bmp.GetPropertyItem(0x5100); // FrameDelay var pi2 = bmp.GetPropertyItem(0x5101); // LoopCount var delays = new int[count]; var sb = new StringBuilder(); for (int i = 0; i < count; i++) { bmp.SelectActiveFrame(fd, i); bmp.Save(fn + "_" + (i + 1) + ".png", ImageFormat.Png); delays[i] = BitConverter.ToInt32(pi1.Value, i * 4) * 10; if (i > 0) sb.Append(", "); sb.AppendFormat("{0}ms", delays[i]); } int loop = BitConverter.ToInt16(pi2.Value, 0); Debug.WriteLine(string.Format( "{0}: count = {1}, loop = {2}, delays = {{ {3} }}", gif, count, loop, sb)); } }