不知道大家有制作多二维码吗?本篇文章我将给大家介绍如何用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{    /// <summary>    /// 二维码编码器    /// </summary>    public static class Encoder    {        /// <summary>        /// 生成二维码        /// </summary>        /// <param name="msg">信息</param>        /// <param name="version">版本 1 ~ 40</param>        /// <param name="pixel">像素点大小</param>        /// <param name="icon_path">图标路径</param>        /// <param name="icon_size">图标尺寸</param>        /// <param name="icon_border">图标边框厚度</param>        /// <param name="white_edge">二维码白边</param>        /// <returns>位图</returns>        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#视频教程

更多相关文章

  1. 100多个纯CSS3动画图标
  2. 15个炫酷的CSS3加载动画图标
  3. 3组24个CSS3分享图标,可旋转和悬停
  4. 如何用python制作动态二维码,来哄女朋友开心?
  5. 教你用php将二维码和文字结合到一个背景图片上!
  6. 分享三种php生成二维码的方法
  7. PHP生成有背景的二维码图片
  8. 使用phpqrcode生成二维码
  9. PHP生成有背景的二维码图片(代码示例)

随机推荐

  1. android资源配置文件
  2. 背景图片显示问题 图片显示错误 android
  3. Cordova 入门AndroidStudio集成
  4. android动画效果处理
  5. ContentProvider-获取系统数据
  6. EditText 的常用属性与解释
  7. 阅读《Android(安卓)从入门到精通》(23)—
  8. Android使用Junit测试
  9. android 开源和一些博客总结
  10. Android版本与Linux内核