【问题标题】:C# converting UWP BitmapImage to WPF BitmapImageC# 将 UWP BitmapImage 转换为 WPF BitmapImage
【发布时间】:2018-05-30 14:23:59
【问题描述】:

我目前有一个 WPF 应用程序,我尝试在其中列出计算机上安装的所有 UWP 应用程序的所有图标。为此,我参考了所需的 UWP 程序集。这是我的工作:

  1. 我实例化了一个PackageManager
  2. 我打电话给FindPackagesForUser(string.Empty),让我安装所有 UWP 应用。
  3. 对于每个应用,我通过调用 package.GetAppListEntriesAsync() 获取其所有列表条目。
  4. 对于每个应用列表条目,我调用appListEntry.DisplayInfo.GetLogo(new Size(256, 256))

但是,这会返回 RandomAccessStreamReference,它是 Windows.UI.Xaml.Media.Imaging.BitmapImage 的 UWP 流,而 Windows.UI.Xaml.Media.Imaging.BitmapImage 又是 WPF System.Windows.Media.Imaging.BitmapImage 的 UWP 版本。

如何将此流的字节转换为 WPF BitmapImage?是否有任何关于 UWP 如何存储这些的文档?

【问题讨论】:

    标签: c# wpf uwp


    【解决方案1】:

    只需打开 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();
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 2017-12-03
      • 2012-12-08
      相关资源
      最近更新 更多