ThoughtWorks.QRCode.dll下載地址https://pan.baidu.com/s/1pKRb779
在當下,二維碼的使用越來越加普遍,下面就用winform來實現二維碼的生成:
首先需要下載一個ThoughtWorks.QRCode.dll,然后在項目添加引用ThoughtWorks.QRCode.dll
using ThoughtWorks.QRCode.Codec;
新建一個winfrom程序,使用pictureBox來展示將要生成的二維碼
生成二維碼方法
public Bitmap CodeImage(string str) { //實例化一個生成二維碼的對象 QRCodeEncoder qrEncoder = new QRCodeEncoder(); //設置二維碼的編碼模式 qrEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //二維碼像素寬度 qrEncoder.QRCodeScale = 4; //設置版本 qrEncoder.QRCodeVersion = 0; //根據內容生成二維碼圖像 Bitmap image = qrEncoder.Encode(str, Encoding.UTF8); return image; }
編碼格式有三種,自己動手試了下得出下面信息
1.QRCodeEncoder.ENCODE_MODE.BYTE 可以識別文字字母和數字
2.QRCodeEncoder.ENCODE_MODE.NUMERIC 可以識別數字,無法識別文字和字母
3.QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC 可以識別文字字母數字,但是有數字可以正確識別
像素寬度QRCodeVersion控制的是圖像大小,數值越大生成二維碼圖像就越大。
當錯誤提示是索引超出界限的時候,通常把版本QRCodeVersion的值設置為0即可。
當輸入漢字二維碼識別出來亂碼的時候可以在生成圖像的時候加上編碼格式UTF8。
效果如下:
我們可以在二維碼中加入自己想添加的logo
/// <summary> /// 要插入的logo圖像 /// </summary> /// <returns></returns> public Bitmap GetLogo() { //獲得logo圖像 Bitmap bmp = new Bitmap("Koala.jpg"); //設置大小 Bitmap newBmp = new Bitmap(bmp, 30, 30); return newBmp; }
在二維碼處設置圖像顯示的位置
public Bitmap CodeImage(string str) { ... Bitmap image = qrEncoder.Encode(str, Encoding.UTF8); Bitmap logo = GetLogo(); int x = image.Width; int y = image.Height; //設置logo圖像位置 Point point = new Point(x / 2 - 15, y / 2 - 15); //以二維碼圖像為背景繪制圖像 Graphics g = Graphics.FromImage(image); g.DrawImage(logo, point); return image; }
實現效果:
簡單的實現二維碼完成了。