在Avalonia中生成二维码需借助QRCoder库生成PNG字节数组,再通过MemoryStream转换为Avalonia.Media.Imaging.Bitmap并绑定到Image控件显示,支持MVVM、动态更新与异常处理。

在 Avalonia 中生成二维码,核心是用 C# 生成二维码图像(如 Bitmap 或 byte[]),再通过 Avalonia 的 Image 控件显示。Avalonia 本身不内置二维码生成功能,需借助第三方库(如 QRCoder)完成编码,再转换为 Avalonia 可识别的图像格式(如 Bitmap)。
安装 QRCoder 和 Avalonia 图像支持
QRCoder 是轻量、无依赖的纯 C# 二维码生成库,兼容 .NET Standard 2.0+,完美适配 Avalonia。
- 在项目中安装 NuGet 包:
QRCoder - 确保已引用
Avalonia.Controls和Avalonia.Media.Imaging(用于显示图像) - 若使用 Avalonia 11+,无需额外处理;旧版注意确认
Bitmap构造方式是否兼容(推荐用Bitmap(Stream)或Bitmap(pixelData, width, height, dpiX, dpiY, format))
生成二维码并转为 Avalonia Bitmap
关键步骤:用 QRCoder 生成 PNG 字节数组 → 转成 MemoryStream → 构造 Avalonia.Media.Imaging.Bitmap。
- 示例代码(ViewModel 或 Code-Behind 中):
var qrGenerator = new QRCodeGenerator();
var qrData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.Q);
var qrCode = new PngByteQRCode(qrData);
byte[] qrBytes = qrCode.GetGraphic(20); // 20px 每模块,可调
<p>using var stream = new MemoryStream(qrBytes);
var bitmap = new Bitmap(stream); // Avalonia 的 Bitmap
// 绑定到控件:Image.Source = bitmap;
登录后复制
⚠️ 注意:GetGraphic() 支持添加 Logo、边框、背景色等(见 QRCoder 文档),但 Avalonia 显示仅需最终 PNG 字节流。
在 XAML 中显示二维码图像
用标准 Image 控件绑定生成的 Bitmap 即可,支持缩放、居中等布局行为。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~