在Windows Phone 8.1中,如何将IBuffer转换为字节数组?

17

我正在为Windows Phone 8.1编写一个应用程序。

我需要将UIElement保存为图像文件(我更喜欢JPG或PNG格式)。 我正在使用RenderTargetBitmap类来完成此操作。 调用UIElement上的RenderAsync方法后,我创建一个IBuffer,其中包含RenderTargetBitmap的GetPixelsAsync()方法的结果。

现在我需要调用ToArray()方法将我的IBuffer转换为字节数组,以便使用类似BitmapEncoder的东西来保存我的图像,但是似乎在Windows Phone 8.1上没有IBuffer的ToArray()方法,而在Windows 8.1上有。

我该如何解决这个问题?


你能展示一些代码吗?特别是如何创建IBuffer - 实现该接口的实际对象是什么? - Paul Annetts
2个回答

23

该功能适用于Windows Phone 8.1,但不适用于WP 8.0。 (请参见MSDN链接

然而,您需要确保包括适当的命名空间,以便编译器找到它:

using System.Runtime.InteropServices.WindowsRuntime


ToArray() 不总是正确返回数据。有时,您需要使用反射来获取它。这可能是因为接口的实现可能存在错误。 - Christian Findlay

3
我不想创建新问题,所以决定扩展这个问题。这将是两个平台 WP8 和 Windows 应用程序的完整答案。
也许您知道如何在 Windows 应用商店应用程序中将 IBuffer 转换为 byte[],我们无法使用此命名空间:System.Runtime.InteropServices.WindowsRuntime。
提议的解决方案: 我使用了来自此帖子的代码:https://stackoverflow.com/a/21490534/3139083 谢谢

仅供参考,StackOverflow的指南表明,您应该开始一个新问题而不是扩展一个问题。如果这个问题不能特别回答您的用例,通常接受开始一个新问题。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接