えムナウ Blog

えムナウ の なすがまま

目次

Blog 利用状況

ニュース


follow mnow at http://twitter.com


えムナウのプログラミングのページ

INETAJ

書庫

日記カテゴリ

ギャラリ

2013年5月30日 #

WPF と GIFアニメ

WPFでGIFアニメを表示するとなると、GDI+に逃げてSystem.Drawingを使う例がほとんどです。

いばらの道ですがBitmapDecoderを使ってMetaDataを取得することにより各フレームの画像と必要な情報を取得することができます。

            FileStream imageFileStrm = new FileStream("./Resources/GifAnime.gif",

                FileMode.Open, FileAccess.Read, FileShare.Read);

            BitmapDecoder decoder = BitmapDecoder.Create(imageFileStrm,

                BitmapCreateOptions.PreservePixelFormat,

                BitmapCacheOption.Default);

            BitmapMetadata metadata = (BitmapMetadata)decoder.Frames[0].Metadata;

            var top = metadata.GetQuery("/imgdesc/Top");

            var left = metadata.GetQuery("/imgdesc/Left");

            var width = metadata.GetQuery("/imgdesc/Width");

            var height = metadata.GetQuery("/imgdesc/Height");

            var delay = metadata.GetQuery("/grctlext/Delay");

            var transparencyFlag = metadata.GetQuery("/grctlext/TransparencyFlag");

            var transparentColorIndex = metadata.GetQuery("/grctlext/TransparentColorIndex");

            image.Source = decoder.Frames[0];

 

ここから先もまだ長いのですが、この方法を応用したライブラリが既にあります。

理屈は抑えておくとソースもダウンロードできるし安心してライブラリを使えます。

 

WPF Animated GIF

http://wpfanimatedgif.codeplex.com/

posted @ 14:06 | Feedback (10)