服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - ASP.NET教程 - 用.NET如何生成二维码

用.NET如何生成二维码

2019-12-25 13:09lijiao ASP.NET教程

二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,下面介绍一下如何用.NET生成二维码(QR Code码制),需要的朋友可以参考下

下面介绍一下如何用.NET生成二维码(QR Code码制),下面给出详细步骤:

1、新建一个window应用程序,然后引入.NET二维码类库(开源的类库,可从网上下载):

用.NET如何生成二维码

2、构建UI界面,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
namespace WinQRCode
{
  partial class Form1
  {
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.IContainer components = null;
 
    /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
    protected override void Dispose(bool disposing)
    {
      if (disposing && (components != null))
      {
        components.Dispose();
      }
      base.Dispose(disposing);
    }
 
    #region Windows 窗体设计器生成的代码
 
    /// <summary>
    /// 设计器支持所需的方法 - 不要
    /// 使用代码编辑器修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
      this.button1 = new System.Windows.Forms.Button();
      this.button2 = new System.Windows.Forms.Button();
      this.pictureBox1 = new System.Windows.Forms.PictureBox();
      this.label1 = new System.Windows.Forms.Label();
      this.textBox1 = new System.Windows.Forms.TextBox();
      this.label2 = new System.Windows.Forms.Label();
      this.lbl解码信息 = new System.Windows.Forms.Label();
      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
      this.SuspendLayout();
      //
      // button1
      //
      this.button1.Location = new System.Drawing.Point(446, 31);
      this.button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
      this.button1.Name = "button1";
      this.button1.Size = new System.Drawing.Size(103, 37);
      this.button1.TabIndex = 0;
      this.button1.Text = "编码";
      this.button1.UseVisualStyleBackColor = true;
      this.button1.Click += new System.EventHandler(this.button1_Click);
      //
      // button2
      //
      this.button2.Location = new System.Drawing.Point(446, 81);
      this.button2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
      this.button2.Name = "button2";
      this.button2.Size = new System.Drawing.Size(103, 37);
      this.button2.TabIndex = 1;
      this.button2.Text = "解码";
      this.button2.UseVisualStyleBackColor = true;
      this.button2.Click += new System.EventHandler(this.button2_Click);
      //
      // pictureBox1
      //
      this.pictureBox1.Location = new System.Drawing.Point(23, 117);
      this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
      this.pictureBox1.Name = "pictureBox1";
      this.pictureBox1.Size = new System.Drawing.Size(279, 253);
      this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
      this.pictureBox1.TabIndex = 2;
      this.pictureBox1.TabStop = false;
      //
      // label1
      //
      this.label1.AutoSize = true;
      this.label1.Location = new System.Drawing.Point(18, 39);
      this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
      this.label1.Name = "label1";
      this.label1.Size = new System.Drawing.Size(69, 25);
      this.label1.TabIndex = 3;
      this.label1.Text = "信息:";
      //
      // textBox1
      //
      this.textBox1.Location = new System.Drawing.Point(95, 37);
      this.textBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
      this.textBox1.Name = "textBox1";
      this.textBox1.Size = new System.Drawing.Size(333, 31);
      this.textBox1.TabIndex = 4;
      //
      // label2
      //
      this.label2.AutoSize = true;
      this.label2.Location = new System.Drawing.Point(18, 81);
      this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
      this.label2.Name = "label2";
      this.label2.Size = new System.Drawing.Size(88, 25);
      this.label2.TabIndex = 5;
      this.label2.Text = "二维码:";
      //
      // lbl解码信息
      //
      this.lbl解码信息.AutoSize = true;
      this.lbl解码信息.Location = new System.Drawing.Point(101, 81);
      this.lbl解码信息.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
      this.lbl解码信息.Name = "lbl解码信息";
      this.lbl解码信息.Size = new System.Drawing.Size(0, 25);
      this.lbl解码信息.TabIndex = 6;
      //
      // Form1
      //
      this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
      this.ClientSize = new System.Drawing.Size(572, 384);
      this.Controls.Add(this.lbl解码信息);
      this.Controls.Add(this.label2);
      this.Controls.Add(this.textBox1);
      this.Controls.Add(this.label1);
      this.Controls.Add(this.pictureBox1);
      this.Controls.Add(this.button2);
      this.Controls.Add(this.button1);
      this.Font = new System.Drawing.Font("微软雅黑", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
      this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
      this.Name = "Form1";
      this.Text = "二维码";
      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
      this.ResumeLayout(false);
      this.PerformLayout();
 
    }
 
    #endregion
 
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Button button2;
    private System.Windows.Forms.PictureBox pictureBox1;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.Label lbl解码信息;
  }
}

图形如下所示:

用.NET如何生成二维码

3、编写 编码和解码按钮事件,进行编码和解码处理:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WinQRCode
{
  using ThoughtWorks.QRCode.Codec;
  using ThoughtWorks.QRCode.Codec.Data;
  using ThoughtWorks.QRCode.Codec.Util;
  using System.IO;
  using PdfToImage;
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }
    /// <summary>
    /// 编码
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
      if (this.textBox1.Text != "")
      {
        Cursor.Current = Cursors.WaitCursor;
        if (textBox1.Text.Trim() == String.Empty)
        {
          MessageBox.Show("不能为空.");
          return;
        }
        QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();       
        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
        qrCodeEncoder.QRCodeScale = 4;
        qrCodeEncoder.QRCodeVersion = 7;      
        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;       
        System.Drawing.Image image;
        String data = textBox1.Text;
        //编码
        image = qrCodeEncoder.Encode(data);
        //图片显示
        this.pictureBox1.Image = image;
        Cursor.Current = Cursors.Default;
 
      }
    }
    /// <summary>
    /// 解码
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button2_Click(object sender, EventArgs e)
    {
      Cursor.Current = Cursors.WaitCursor;
      Bitmap b = this.pictureBox1.Image as Bitmap;
      try
      {
        QRCodeDecoder decoder = new QRCodeDecoder();
        //解码
        String decodedString = decoder.decode(new QRCodeBitmapImage(b));
        //显示解码信息
        this.lbl解码信息.Text += decodedString ;
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message);
      }
      Cursor.Current = Cursors.Default;
    }
 
    private void Form1_Load(object sender, EventArgs e)
    {
 
    }
  }
}

4、编译运行,如下图:

用.NET如何生成二维码

以上就是关于使用.NET生成二维码的大概思路,还有许多不足之处,希望大家多提建议,或者自己进行创新修改。

延伸 · 阅读

精彩推荐