C# Avalonia怎么生成二维码 Avalonia二维码生成教程

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

在 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
即可,支持缩放、居中等布局行为。

XAML 示例:
<Image Width="200" Height="200" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center"
       Source="{Binding QrBitmap}" />

如果采用 MVVM,把

QrBitmap
声明为
Avalonia.Media.Imaging.Bitmap
类型的属性,并在数据变更后触发通知(
NotifyPropertyChanged
)。

进阶:支持动态更新与错误处理

实际应用中常需响应输入变化实时刷新二维码(如文本框输入 URL 后自动生成)。

监听文本变更(如
TextBox.Text
PropertyChanged
生成前校验字符串非空、长度合理(QRCoder 对超长内容会自动降级 ECC 级别或抛异常) 捕获
QRCodeDataException
等异常,避免 UI 崩溃
考虑用
Task.Run
异步生成(尤其内容复杂时),避免阻塞 UI 线程

不复杂但容易忽略。

相关推荐