我正在嘗試顯示存儲在Windows Phone 8.1(RT)應用程序的本地文件夾中的GIF文件。到目前爲止,我已經嘗試了幾種方法:如何在Windows Phone 8.1(RT)應用程序中顯示動畫GIF?
- 在WebView控件中加載GIF。這不是一個解決方案,因爲我想在FlipView控件中顯示圖像(我不能翻轉到另一個圖像)。此外,它很慢。
使用BitmapDecoder類獲取GIF幀,並使用故事板爲它們製作動畫。
的代碼如下:
using (var stream = await storageFile.OpenReadAsync())
{
//I don't specify the type since I would like to load other type of images also
//It doesn't make any difference if I would use "BitmapDecoder.GifDecoderId"
var decoder = await BitmapDecoder.CreateAsync(stream);
uint frameCount = decoder.FrameCount;
for (uint frameIndex = 0; frameIndex < frameCount; frameIndex++)
{
var frame = await decoder.GetFrameAsync(frameIndex);
var writableBitmap = new WriteableBitmap((int)decoder.OrientedPixelWidth,
(int)decoder.OrientedPixelHeight);
var pixelDataProvider = await frame.GetPixelDataAsync
(BitmapPixelFormat.Bgra8,
decoder.BitmapAlphaMode, new BitmapTransform(),
ExifOrientationMode.IgnoreExifOrientation,
ColorManagementMode.DoNotColorManage);
var pixelData = pixelDataProvider.DetachPixelData();
using (var pixelStream = writableBitmap.PixelBuffer.AsStream())
{
pixelStream.Write(pixelData, 0, pixelData.Length);
}
_bitmapFrames.Add(writableBitmap);
}
}
的問題是,我從GIF圖像得到幀搞砸
我做得不對的這種方法?爲了獲得好的結果,我應該修改什麼?
我不想使用SharpDX,因爲它看起來非常複雜,而且我是初學者。
ImageTools僅適用於Silverlight的
這些日子人們還在使用動畫.gif嗎?我討厭甚至不得不提出保留它,但你可以做'' - 雖然我猜如果你要保留它,讓我知道,我會把它作爲回答,所以我可以拿出一些簡單的點。 :) –
2014-10-02 19:29:18
我已經嘗試添加一個MediaElement到頁面,並設置gif文件作爲其源。在將'AreTransportControlsEnabled'設置爲true後,我可以看到錯誤消息:'不支持的視頻類型或無效的文件路徑'。此外,GIF文件的路徑設置正確。 – rhcpfan 2014-10-03 07:11:14
可能發誓我之前使用過它,也許不是WP?如果我有時間的話,我會稍後修改它。對於那個很抱歉。 – 2014-10-03 12:46:18