在当下,二维码的使用越来越加普遍,下面就用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; }
实现效果:
简单的实现二维码完成了。
时间: 2024-10-05 21:17:07