为什么GifBitmapDecoder播放不完整的gif

时间:2013-11-15 03:29:59

标签: .net wpf gif

我想使用GifBitmapDecoder和Int32Animation播放一个gif图像,但我发现一些gif在播放时是不完整的。

这是我的GIF:

enter image description here

这是我的测试代码:

GifBitmapDecoder _gifDecoder = new GifBitmapDecoder(
            new Uri("pack://application:,,,/Expression/f006.gif"), 
            BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);

foreach (BitmapFrame bf in _gifDecoder.Frames)
{
     Image i = new Image { Source = bf };
     wp.Children.Add(i);
}

的Xaml:

<WrapPanel Name="wp" ItemHeight="40" ItemWidth="40"/>

结果:

enter image description here

所以你能告诉我什么是错的,因为我已经搜索了两天而一无所获......

1 个答案:

答案 0 :(得分:1)

单个GIF帧可能只是任意X,Y坐标图像的一部分。

要在图像中正确放置框架,您需要框架的X,Y坐标。 阅读此帖有关如何获取此信息的信息:Reading Metadata property of GifBitmapDecoder...why is it null?

然后,要获得完整的图像,必须将帧与前一帧合并,直到获得完整的图像。但是,假设您真正的“GIF播放器”只是将动画帧一个接一个地绘制(而不是将它们并排放置在StackPanel中),这将自动发生......