C # преобразование UWP BitmapImage в WPF BitmapImage - PullRequest
0 голосов
/ 30 мая 2018

В настоящее время у меня есть приложение WPF, в котором я пытаюсь перечислить все значки для всех приложений UWP, установленных на компьютере.Для этого я сослался на необходимые сборки UWP.Вот что я делаю:

  1. Я создаю PackageManager.
  2. Я звоню FindPackagesForUser(string.Empty), чтобы дать мне все установленные приложения UWP.
  3. Для каждого приложения:Я получаю все записи списка, вызывая package.GetAppListEntriesAsync().
  4. . Для каждой записи списка приложений я звоню appListEntry.DisplayInfo.GetLogo(new Size(256, 256)).

. Однако это возвращает RandomAccessStreamReference, который являетсяПоток UWP для Windows.UI.Xaml.Media.Imaging.BitmapImage, который в свою очередь является версией UWP для WPF System.Windows.Media.Imaging.BitmapImage.

Как преобразовать байты этого потока в WPF BitmapImage?Есть ли документация о том, как UWP хранит их?

1 Ответ

0 голосов
/ 30 мая 2018

Просто откройте RandomAccessStreamReference для чтения, чтобы получить IRandomAccessStream, затем вызовите AsStream, чтобы получить System.IO.Stream:

using System.IO;
...

var streamRef = appListEntry.DisplayInfo.GetLogo(new Windows.Foundation.Size(256, 256));
var bitmap = new BitmapImage();

using (var randomAccessStream = await streamRef.OpenReadAsync())
using (var stream = randomAccessStream.AsStream())
{
    bitmap.BeginInit();
    bitmap.CacheOption = BitmapCacheOption.OnLoad;
    bitmap.StreamSource = stream;
    bitmap.EndInit();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...