如何在 WinUI 3 应用程序中显示 Bitmap 对象

Chr*_*ris 1 .net c# image winui-3 qrcoder

我想在我的 WinUI 3 桌面应用程序中显示 QRCoder 库 ( https://github.com/codebude/QRCoder/ ) 生成的 QR 代码。

从 QRCoder 我得到System.Drawing.Bitmap对象:

            QRCodeGenerator qrCodeGenerator = new();
            QRCodeData qrCodeData = qrCodeGenerator.CreateQrCode(associateSoftwareTokenResponse.SecretCode, QRCodeGenerator.ECCLevel.Q);
            QRCode qrCode = new(qrCodeData);
            Bitmap qrCodeBitmap = qrCode.GetGraphic(20);
Run Code Online (Sandbox Code Playgroud)

然后将其分配给 XAML Image控件:qrCodeImage.Source = qrCodeBitmap给出错误:

错误 CS0029 无法将类型“System.Drawing.Bitmap”隐式转换为“Microsoft.UI.Xaml.Media.ImageSource”

所以显然仍然需要一些转换。

我设法找到的所有文档和示例都解释了如何从文件而不是位图对象打印图像。

如何在我的 WinUI 3 应用程序中显示此代码生成的位图?

mm8*_*mm8 7

您应该能够BitmapImage从流中创建如下所示的内容:

Bitmap qrCodeBitmap = ...;
BitmapImage bitmapImage = new BitmapImage();
using (MemoryStream stream = new MemoryStream())
{
    qrCodeBitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
    stream.Position = 0;
    bitmapImage.SetSource(stream.AsRandomAccessStream());
}
image.Source = bitmapImage;
Run Code Online (Sandbox Code Playgroud)