C#实现二维码的简单生成

本文介绍了用winform实现二维码生成的方法。需下载ThoughtWorks.QRCode.dll并在项目中添加引用,新建winfrom程序用pictureBox展示二维码。还提及编码格式、像素宽度控制等内容,如不同编码格式的识别范围,以及处理索引越界、汉字乱码的方法,也可添加logo图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ThoughtWorks.QRCode.dll下载地址https://pan.baidu.com/s/1pKRb779

在当下,二维码的使用越来越加普遍,下面就用winform来实现二维码的生成:

首先需要下载一个ThoughtWorks.QRCode.dll,然后在项目添加引用ThoughtWorks.QRCode.dll

using ThoughtWorks.QRCode.Codec;

新建一个winfrom程序,使用pictureBox来展示将要生成的二维码
在这里插入图片描述
代码实现:

		public Bitmap CodeImage(string str)
        {
            //实例化一个生成二维码的对象
            QRCodeEncoder qrEncoder = new QRCodeEncoder();
            //设置二维码的编码模式
            qrEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
            //二维码像素宽度
            qrEncoder.QRCodeScale = 4;
            //设置版本
            qrEncoder.QRCodeVersion = 0;
            //根据内容生成二维码图像
            Bitmap image = qrEncoder.Encode(str, Encoding.UTF8);
            return image;
        }

编码格式有三种,自己动手试了下得出下面信息

1.QRCodeEncoder.ENCODE_MODE.BYTE 可以识别文字字母和数字

2.QRCodeEncoder.ENCODE_MODE.NUMERIC 可以识别数字,无法识别文字和字母

3.QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC 可以识别文字字母数字,但是有数字可以正确识别

像素宽度QRCodeVersion控制的是图像大小,数值越大生成二维码图像就越大。

当错误提示是索引超出界限的时候,通常把版本QRCodeVersion的值设置为0即可。

当输入汉字二维码识别出来乱码的时候可以在生成图像的时候加上编码格式UTF8。

效果如下:
在这里插入图片描述
也可在二维码中添加logo图标
代码:

   /// <summary>
        /// 要插入的logo图像
        /// </summary>
        /// <returns></returns>
        public Bitmap GetLogo()
        {
            //获得logo图像
            Bitmap bmp = new Bitmap("Koala.jpg");
            //设置大小
            Bitmap newBmp = new Bitmap(bmp, 30, 30);
            return newBmp;
        }        

在二维码处设置图片显示的位置

		public Bitmap CodeImage(string str)
        {
            ...
            Bitmap image = qrEncoder.Encode(str, Encoding.UTF8);
            Bitmap logo = GetLogo();
            int x = image.Width;
            int y = image.Height;
            //设置logo图像位置
            Point point = new Point(x / 2 - 15, y / 2 - 15);
            //以二维码图像为背景绘制图像    
            Graphics g = Graphics.FromImage(image);
            g.DrawImage(logo, point);
            return image;
        }

实现效果图:
在这里插入图片描述
原文连接:https://www.cnblogs.com/buli93/p/4797350.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值