QRCodeを作成する(ZXing使用)

もくじ
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.BitmapMicrosoft.ui-Xaml.Imagesourceに変換する

https://stackoverflow.com/questions/76640972/convert-system-drawing-icon-to-microsoft-ui-xaml-imagesource