我正在尝试显示存储在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