using System; using System.IO; using System.Windows; using System.Windows.Media.Imaging; using QRCoder; namespace Paca.App; public partial class QrCodeDialog : Window { public string PageUrl { get; } public string PageTitle { get; } public QrCodeDialog(string url, string title) { InitializeComponent(); PageUrl = url; PageTitle = title; PageTitleText.Text = string.IsNullOrWhiteSpace(title) ? url : title; UrlDisplayBox.Text = url; GenerateQrImage(url); } private void GenerateQrImage(string url) { try { using var generator = new QRCodeGenerator(); using var data = generator.CreateQrCode(string.IsNullOrWhiteSpace(url) ? " " : url, QRCodeGenerator.ECCLevel.M); var qr = new QRCode(data); using var bmp = qr.GetGraphic(8); using var ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); ms.Position = 0; var frame = BitmapFrame.Create(ms, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); frame.Freeze(); QrImage.Source = frame; } catch { } } private void CopyUrlBtn_Click(object sender, RoutedEventArgs e) { try { Clipboard.SetText(PageUrl); CopyUrlBtn.Content = "복사됨 ✓"; } catch { } } private void DoneBtn_Click(object sender, RoutedEventArgs e) { Close(); } }