我想使用GifBitmapDecoder和Int32Animation播放一个gif图像,但我发现一些gif在播放时是不完整的。
这是我的GIF:
这是我的测试代码:
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"/>
结果:
所以你能告诉我什么是错的,因为我已经搜索了两天而一无所获......
答案 0 :(得分:1)
单个GIF帧可能只是任意X,Y坐标图像的一部分。
要在图像中正确放置框架,您需要框架的X,Y坐标。 阅读此帖有关如何获取此信息的信息:Reading Metadata property of GifBitmapDecoder...why is it null?
然后,要获得完整的图像,必须将帧与前一帧合并,直到获得完整的图像。但是,假设您真正的“GIF播放器”只是将动画帧一个接一个地绘制(而不是将它们并排放置在StackPanel中),这将自动发生......