- 要用到一个类:QRCodeEncoder
这个类要添加一个动态库:ThoughtWorks.QRCode.dll(笔者不知道怎么上传附件,读者可以上网搜索,也可以给笔者留言)
然后引入命名空间:using ThoughtWorks.QRCode.Codec;
-
好了,项目开始。
首先,声明一个 QRCodeEncoder 类实例:
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
-
设置编码方式:
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
这里笔者将其设置为字节编码(还有两种编码方式,读者可以自行试验),现在的流行的普遍的二维码都是字节编码。
-
设置规模和版本:
qrCodeEncoder.QRCodeScale = 4;
qrCodeEncoder.QRCodeVersion = 7;
这里设置规模为:4,版本为:7,其余值读者可以自行试验,这两个值基本只是改变了二维码的大小,读者设置的值都是现在普遍使用的值。
-
设置错误校验(错误更正)的级别:
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
这里设置为中等,一共有四个级别,读者可以自行试验。
-
根据内容生成二维码图片,最后把生成的图片显示出来就可以啦:
string link = "http://jingyan.baidu.com/user/npublic?un=%E8%BE%B9%E7%BC%98%E6%B2%B3%E5%9B%BE";
bmp = qrCodeEncoder.Encode(link);
一般来说,二维码生成的都是一个连接(当然读者可以改成任意的文本)。
-
笔者这里将它封装成了一个方法,方便使用:
/// <summary>
/// 根据链接获取二维码
/// </summary>
/// <param name="link">链接</param>
/// <returns>返回二维码图片</returns>
private Bitmap GetDimensionalCode(string link)
{
Bitmap bmp = null;
try
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = 4;
//int version = Convert.ToInt16(cboVersion.Text);
qrCodeEncoder.QRCodeVersion = 7;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
bmp = qrCodeEncoder.Encode(link);
}
catch (Exception ex)
{
//MessageBox.Show("Invalid version !");
}
return bmp;
}
- 8
OK,搞定,看看我们生成的二维码,呵呵!
.net 生成二维码