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;
  • 相关阅读:
    加载图片出现403的问题
    js字符串首字母大写的不同写法
    vue中使用两个window.onresize问题解决
    vue备用
    vue注册全局组件
    Java中Timer的用法
    笔记本设置wifi热点
    UVA 11401 Triangle Counting
    数论专题---除法表达式之高精度运算,扩展欧几里得算法
    能被2、3、4、5、6、7、8、9整除数的特征
  • 原文地址:https://www.cnblogs.com/wzwyc/p/8807523.html
Copyright © 2011-2022 走看看