MAUI怎么实现二维码生成 MAUI生成QR Code方法

来源:这里教程网 时间:2026-02-21 17:34:10 作者:

MAUI 本身不内置二维码生成能力,但可以通过第三方库轻松实现,最常用的是 QRCoder(兼容 .NET Standard / .NET 6+),配合 MAUI 的

Image
控件显示。

安装 QRCoder 库

在你的 MAUI 项目(通常是 Shared 项目或平台项目)中安装 NuGet 包:

包名:
QRCoder
命令(Package Manager Console):
Install-Package QRCoder
或通过 Visual Studio 的 NuGet 包管理器搜索安装

生成 QR Code 并转为 MAUI 可用图像

QRCoder 默认输出为

Bitmap
(仅支持 Windows)或
byte[]
(PNG 数据),而 MAUI 的
Image
控件需要
StreamImageSource
或 Base64 字符串。推荐方式是生成 PNG 字节数组,再转为
MemoryStream

创建
QRCodeGenerator
实例,调用
CreateQrCode()
得到
QRCodeData
PngByteQRCode
渲染为
byte[]
将字节数组包装成
MemoryStream
,赋给
Image.Source

示例代码(C# 后台):

var qrGenerator = new QRCodeGenerator();
var qrData = qrGenerator.CreateQrCode("https://maui.dev", QRCodeGenerator.ECCLevel.Q);
var qrCode = new PngByteQRCode(qrData);
byte[] qrBytes = qrCode.GetQRCodeByteArray(10); // 10px 每模块,可调
<p>// 绑定到 Image 控件(XAML 中 x:Name="QrImage")
QrImage.Source = ImageSource.FromStream(() => new MemoryStream(qrBytes));

跨平台注意事项

QRCoder 在所有 MAUI 支持平台(Android、iOS、Windows、macOS)上均可运行,但要注意:

Android/iOS 不支持
System.Drawing.Bitmap
,务必使用
PngByteQRCode
而非
BitmapByteQRCode
生成尺寸建议控制在 500×500 像素以内,避免内存压力或 UI 卡顿 如需带 Logo 的二维码,需自行用 SkiaSharp 叠加(QRCoder 不直接支持)

简易封装(可选)

为复用方便,可封装一个静态方法:

public static ImageSource GenerateQr(string content, int pixelsPerModule = 8)
{
    var data = new QRCodeGenerator().CreateQrCode(content, QRCodeGenerator.ECCLevel.M);
    var bytes = new PngByteQRCode(data).GetQRCodeByteArray(pixelsPerModule);
    return ImageSource.FromStream(() => new MemoryStream(bytes));
}

然后在页面中直接调用:

QrImage.Source = Utils.GenerateQr("Hello MAUI");

基本上就这些。不复杂但容易忽略平台兼容性细节,用对渲染器就能稳定跑起来。

相关推荐