using Avalonia.Controls; using Avalonia.Media.Imaging; using Avalonia.Threading; namespace v2rayN.Desktop.Views; public partial class QrcodeView : UserControl { public QrcodeView() { InitializeComponent(); } public QrcodeView(string? url) { InitializeComponent(); txtContent.Text = url; imgQrcode.Source = GetQRCode(url); txtContent.GotFocus += (_, _) => Dispatcher.UIThread.Post(() => { txtContent.SelectAll(); }); } private Bitmap? GetQRCode(string? url) { var bytes = QRCodeUtils.GenQRCode(url); return ByteToBitmap(bytes); } private Bitmap? ByteToBitmap(byte[]? bytes) { if (bytes is null) { return null; } using var ms = new MemoryStream(bytes); return new Bitmap(ms); } }