二維碼的生成需要用到二維碼生成的類庫,ThoughtWorks.QRCode.dll
步驟:
第一步:下載二維碼生成類庫,ThoughtWorks.QRCode.dll
第二步:新建winform項目,引用類庫ThoughtWorks.QRCode.dll,並布置winform窗體的控件
第三步:編寫生成和保存二維碼的方法
第四步:演示窗體的效果和保存后的二維碼
二:介紹例子的步驟
第一步:新建一個QRCodeTest項目,添加引用類庫ThoughtWorks.QRCode.dll,
項目結構如果所示:
第二步:布置窗體用到的控件,兩個數值控件、一個文件框控件、兩個按鈕控件,
和一個圖片框控件,並給它們命名,如圖:
第三步:代碼的展示
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ThoughtWorks.QRCode.Codec;
namespace QRCodeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 生成二維碼事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCreateQRCode_Click(object sender, EventArgs e)
{
//獲取生成二維碼的參數(規模、版本、鏈接地址)
int size = Convert.ToInt32(this.num_Size.Text);
int version = Convert.ToInt32(this.num_version.Text);
string linkaddress = this.txb_LinkAddress.Text.ToString();
//調用生成二維碼圖片的事件,並把圖片顯示在圖片框中
Image img = QrCodeBitmap(linkaddress, size, version);
this.pic_MyImg.Image = img;
}
/// <summary>
/// 保存二維碼事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSaveQRCode_Click(object sender, EventArgs e)
{
if (this.pic_MyImg.Image == null)
{
MessageBox.Show("沒有可用的二維碼圖片!");
}
else
{
SaveFileDialog saveqrimg = new SaveFileDialog();
saveqrimg.Title = "二維碼圖片保存";
saveqrimg.Filter = @"jpeg|*.jpg|bmp|*.bmp|gif|*.gif";
if (saveqrimg.ShowDialog() == DialogResult.OK)
{
this.pic_MyImg.Image.Save(saveqrimg.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
/// <summary>
/// 生成二維碼位圖
/// </summary>
/// <param name="link">用於生成二維碼的鏈接</param>4
/// <param name="size">二維碼規模大小</param>
/// <param name="version">二維碼版本</param>
/// <returns>二維碼圖片對象</returns>
private Image QrCodeBitmap(string link, int size, int version)
{
QRCodeEncoder qrcodeencoder = new QRCodeEncoder();//生成設置編碼實例
qrcodeencoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//字節編碼
qrcodeencoder.QRCodeScale = size;//二維碼規模大小
qrcodeencoder.QRCodeVersion = version;//二維碼版本
qrcodeencoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//設置錯誤校驗(錯誤更正)的級別:中等M
Image img = qrcodeencoder.Encode(link);//生成二維碼image圖片
return img;
}
}
}
第四步:效果展示
1)生成二維碼
ps: 默認二維碼規模、版本和鏈接地址為4,7,百度地址
2)保存二維碼