zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    BSGS
    [AT1252] IOIOI カード占い
    [十二省联考2019]春节十二响
    [CF912E] Prime Gift
    CDQ分治
    [CF747F] Igor and Interesting Numbers
    [十二省联考2019]异或粽子
    51Nod 2128 前缀异或
    51Nod 3212 数字变位
    HDU 1106 排序
  • 原文地址:https://www.cnblogs.com/wzwyc/p/8807523.html
Copyright © 2011-2022 走看看