最新使用C#生成二维码方案,详解及实例 ( QRCoder )

不知道大家有制作多二维码吗?本篇文章我将给大家介绍如何用c#生成二维码,先说一下生成二维码需要的三个类qrcodegenerator、qrcodedata、qrcode。供后面好理解。他们的 职责 分别是什么呢?qrcodegenerator :用来通过指定的方式生成二维码存储的数据对象,也就是 qrcodedata 二维码中间的 matrix,之后 qrcode 得到 qrcodedata 并生成二维码

二维码

1.前言

最近在搞二维码方面的一些东西,所以接触了一些二维码相关,那么既然用过了就要有用过了的样子

其实关于二维码的文章真的多的数不胜数,有很多写的很认真,很好,但这就像是学习一样,别人会不代表自己就没有学习和记录的价值,所以说学习不在早晚

引入包

1.通过NuGet引入QRCoder

a)首先,我们新建一个 类库 项目,这里命名为 chestnut_qrcode

b)之后通过 NuGet 引入 QRCoder

c)见图操作

e.png

f.png

d)安装成功后,项目引用中就会出现 QRCoder 的引用

e)这时候引入工作已经完成,不过可以顺手创建一个 Encoder.cs 静态公共类

二维码生成类

1.前期准备

这里先说一下生成二维码需要的三个类:

QRCodeGenerator

QRCodeData

QRCode

他们的 职责 分别是什么呢?

QRCodeGenerator :用来通过指定的方式生成二维码存储的数据对象,也就是 QRCodeData 二维码中间的 Matrix,之后 QRCode 得到 QRCodeData 并生成二维码

2.编码

Encoder.cs 全部代码如下:

using System.Drawing;namespace chestnut_qrcode{    ///     /// 二维码编码器    ///     public static class Encoder    {        ///         /// 生成二维码        ///         /// 信息        /// 版本 1 ~ 40        /// 像素点大小        /// 图标路径        /// 图标尺寸        /// 图标边框厚度        /// 二维码白边        /// 位图        public static Bitmap code(string msg, int version, int pixel, string icon_path, int icon_size, int icon_border, bool white_edge)        {            QRCoder.QRCodeGenerator code_generator = new QRCoder.QRCodeGenerator();            QRCoder.QRCodeData code_data = code_generator.CreateQrCode(msg, QRCoder.QRCodeGenerator.ECCLevel.M/* 这里设置容错率的一个级别 */, true, true, QRCoder.QRCodeGenerator.EciMode.Utf8, version);            QRCoder.QRCode code = new QRCoder.QRCode(code_data);            Bitmap icon = new Bitmap(icon_path);            Bitmap bmp = code.GetGraphic(pixel, Color.Black, Color.White, icon, icon_size, icon_border, white_edge);            return bmp;        }    }}

容错率与 version 之间的参数都与编码格式有关系,有些格式是不支持中文的哦

准备Form

1.外观

这里seaconch使用的是 winform 项目,直接截个图吧

g.png

2.代码

using System;using System.Drawing;using System.Windows.Forms;namespace chestnut_form{    public partial class frm_qrcode : Form    {        public frm_qrcode()        {            InitializeComponent();        }        // 窗体加载        private void frm_qrcode_Load(object sender, EventArgs e)        {            cb_version.SelectedIndex = 1;            cb_pixel.SelectedIndex = 0;            cb_icon_size.SelectedIndex = 0;            cb_icon_border.SelectedIndex = 1;        }        // 编码        private void btn_encode_Click(object sender, EventArgs e)        {            int version = Convert.ToInt16(cb_version.Text);            int pixel = Convert.ToInt16(cb_pixel.Text);            string str_msg = tb_msg.Text;            int int_icon_size = Convert.ToInt16(cb_icon_size.Text);            int int_icon_border = Convert.ToInt16(cb_icon_border.Text);            bool b_we = rb_we_y.Checked ? true : false;            Bitmap bmp = chestnut_qrcode.Encoder.code(str_msg, version, pixel, "E:/seaconch/git/1.jpg", int_icon_size, int_icon_border, b_we);            pb_qrcode.Image = bmp;        }        // 保存        private void btn_save_Click(object sender, EventArgs e)        {            if (pb_qrcode.Image != null)                using (SaveFileDialog sfd = new SaveFileDialog())                {                    sfd.Filter = "(*.png)|*.png|(*.bmp)|*.bmp";                    if (sfd.ShowDialog() == DialogResult.OK) pb_qrcode.Image.Save(sfd.FileName);                }        }    }}

看下C#二维码生成效果

h.png

相关文章:

【c#教程】C# 数据类型

相关视频:

极客学院C#视频教程

以上就是最新使用C#生成二维码方案,详解及实例 ( QRCoder )的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 08:36:15
下一篇 2025年12月17日 08:36:30

相关推荐

发表回复

登录后才能评论
关注微信