Как конвертировать IBuffer в байтовый массив в Windows Phone 8.1?

Я пишу приложение для Windows Phone 8.1.

Мне нужно сохранить UIElement в виде файла изображения (я бы предпочел JPG или PNG). Я использую класс RenderTargetBitmap, чтобы сделать это. После вызова метода RenderAsync в моем UIElement я создаю IBuffer, который содержит результат метода GetPixelsAsync() моего RenderTargetBitmap.

Теперь мне нужно вызвать метод ToArray() для преобразования моего IBuffer в байтовый массив, чтобы сохранить мое изображение, используя что-то вроде BitmapEncoder, но кажется, что в Windows Phone 8.1 нет никакого метода ToArray() для IBuffer, в то время как в Windows 8.1 присутствует.

Как я могу решить эту проблему?

Спасибо!

2 ответа

Решение

Это доступно в Windows Phone 8.1, но не доступно в WP 8.0. (см. ссылку MSDN)

Вам необходимо убедиться, что вы включили подходящее пространство имен, чтобы оно было найдено компилятором:

using System.Runtime.InteropServices.WindowsRuntime

Я просто не хочу создавать новый вопрос, поэтому решите расширить этот вопрос. Это будет полный ответ для обеих платформ WP8 и Windows Store.

Может быть, вы знаете, как преобразовать IBuffer в byte[] в приложении Магазина Windows, где мы не можем использовать это пространство имен: System.Runtime.InteropServices.WindowsRuntime

С уважением, Марчин

Предложение решения: я использую код из этого поста: /questions/20409621/readtextasync-v-prilozhenii-magazina-windows-s-mnogobajtovyim-fajlom-i-javascript/20409638#20409638

Спасибо

Другие вопросы по тегам