58 lines
1.5 KiB
C#
58 lines
1.5 KiB
C#
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();
|
|
}
|
|
}
|