もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
指定の文字列を含むQRCodeを画面上に表示したい。
ZXingという便利なライブラリがあるらしい。試してみる。
実験コード
https://github.com/tera1707/QRCodeJikken
WPFのコード
下記のnugetパッケージをインストールする
- system.drawing.common\8.0.8\
- zxing.net\0.16.9\
- zxing.net.bindings.windows.compatibility\0.16.12\
using System.Windows; using ZXing.QrCode; using System.Drawing; using ZXing.Windows.Compatibility; using System.Windows.Media.Imaging; using System.Windows.Interop; // 必要nugetパッケージ // system.drawing.common\8.0.8\ // zxing.net\0.16.9\ // zxing.net.bindings.windows.compatibility\0.16.12\ namespace BitmapJikken { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); GenerateQRcode(); } private void GenerateQRcode() { string URL = "https://tera1707.com/entry/2022/02/06/144447"; var bitmap = GenerateQRcode(URL); var hBitmap = bitmap.GetHbitmap(); img.Source = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); } private Bitmap GenerateQRcode(string URL) { var writer = new BarcodeWriter { Format = ZXing.BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = 200, Width = 200, Margin = 1 } }; return writer.Write(URL); } } }
<Window x:Class="BitmapJikken.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:BitmapJikken" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <Image x:Name="img"/> </Grid> </Window>
WinUIのコード
作成中・・・
参考
QRコードの作成
https://qiita.com/te-k/items/055b70c0182590135953
System.Drawing.Bitmap
をMicrosoft.ui-Xaml.Imagesource
に変換する