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;
复制代码

 

posted @   wzwyc  阅读(468)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示