• WPF生成二维码


    WPF可以通过ZXing.Net库来实现二维码的功能。

    可以通过NuGet安装:

    Install-Package ZXing.Net

    二维码的实现代码:

            #region 二维码的方法
            /// <summary>
            /// 注销对象方法API
            /// </summary>
            /// <param name="obj">准备注销的对象</param>
            /// <returns></returns>
            [DllImport("gdi32")]
            static extern int DeleteObject(IntPtr obj);
    
            /// <summary>
            /// 生成二维码图形
            /// </summary>
            /// <param name="content">二维码文本内容</param>
            /// <param name="width">图片宽度</param>
            /// <param name="height">图片高度</param>
            /// <returns>二维码图形</returns>
            private BitmapSource CreateQRCode(string content, int width, int height)
            {
                EncodingOptions options;
                //包含一些编码、大小等的设置
                //BarcodeWriter :一个智能类来编码一些内容的条形码图像
                BarcodeWriter write = null;
                options = new QrCodeEncodingOptions
                {
                    DisableECI = true,
                    CharacterSet = "UTF-8",
                    Width = width,
                    Height = height,
                    Margin = 0
                };
                write = new BarcodeWriter();
                //设置条形码格式
                write.Format = BarcodeFormat.QR_CODE;
                //获取或设置选项容器的编码和渲染过程。
                write.Options = options;
                //对指定的内容进行编码,并返回该条码的呈现实例。渲染属性渲染实例使用,必须设置方法调用之前。
                Bitmap bitmap = write.Write(content);
                IntPtr ip = bitmap.GetHbitmap();//从GDI+ Bitmap创建GDI位图对象
                //Imaging.CreateBitmapSourceFromHBitmap方法,基于所提供的非托管位图和调色板信息的指针,返回一个托管的BitmapSource
                BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
                DeleteObject(ip);
    
                return bitmapSource;
            }
            #endregion

    生成二维码的调用代码:

                    var strCode = tbxKeyword.Text;
                    if (string.IsNullOrEmpty(strCode))
                    {
                        MessageBox.Show("请输入二维码文本内容");
                        tbxKeyword.Focus();
                        return;
                    }
    
                    imageData = CreateQRCode(strCode, mSettings.QRCodeSize, mSettings.QRCodeSize);
                    imgQRCode.Source = imageData;
  • 相关阅读:
    Linux 管道 管线
    中国网络拓扑图(主干网、地区网、主节点一览表)
    C++中的STL中map用法详解
    Git 丢弃本地修改
    Linux下指定so动态库的加载路径的5种方法!!!
    C++中string append函数的使用与字符串拼接
    C++执行shell命令linux
    Linux动态库.so文件加载搜索路径详解
    FFmpeg打印日志函数分析
    linux C/C++中调用shell命令和运行shell脚本
  • 原文地址:https://www.cnblogs.com/wzwyc/p/8807523.html
Copyright © 2020-2023  润新知