2013-11-15 37 views
0

我想使用GifBitmapDecoder和Int32Animation播放gif圖像,但是我發現一些gif在播放時不完整。爲什麼GifBitmapDecoder播放不完整的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

個人GIF幀可以在任意X是隻是一個形象的一部分,Y座標。

要正確放置圖像中的幀,您需要幀的X,Y座標。 閱讀本文關於如何得到這個信息:Reading Metadata property of GifBitmapDecoder...why is it null?

然後要得到一個完整的圖像,你必須合併幀和前一幀,直到獲得一個完整的圖像。然而,假設你真正的「GIF播放器」只是將動畫幀疊加在另一個之上(而不是將它們並排放置在StackPanel中),則這會自動發生...