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;
  • 相关阅读:
    VSCode一些设置
    Asp.net MVC Vue Axios无刷新请求数据和响应数据
    Vue+element基本增删改查
    SAP客户主数据相关表
    [问题解决]Carry out repairs in non-original systems only if urgent
    [BAPI]取得生产订单详细信息[BAPI_PRODORD_GET_DETAIL]
    如何创建视图簇(View cluster)-SE54/SM34
    修改包装单元(handling unit)用户状态[HU_STATUS_UPDATE]
    如何在table control中创建单选按钮(radio button)
    如何在事件AT SELECTION-SCREEN ON VALUE-REQUEST中取得选择画面字段输入值
  • 原文地址:https://www.cnblogs.com/wzwyc/p/8807523.html
Copyright © 2011-2022 走看看