代码之家  ›  专栏  ›  技术社区  ›  Mathias Lykkegaard Lorenzen

C将uwp位图图像转换为wpf位图图像

  •  0
  • Mathias Lykkegaard Lorenzen  · 技术社区  · 8 年前

    我目前有一个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 也就是wpf的uwp版本 System.Windows.Media.Imaging.BitmapImage .

    如何将此流的字节转换为WPF位图图像?有UWP如何存储这些的文档吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Clemens    8 年前

    只需打开RandoAccessStreamReference进行阅读即可获得 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();
    }
    
    推荐文章