摘自《31天学会CRM项目开发<C#编程入门级项目实战>》
本例将使用ThoughtWorks.QRCode类库生成二维码名片。正式编码前,先了解一下什么是vCard?它是一种用于定义电子名片的标准或规范。手机通信录可导出vCard格式。片段21-15是一段vCard格式的文本,从数据结构上看并不复杂,按照格式填充相关信息,以二维码方式输出。
BEGIN:VCARD FN:张三 TITLE:技术总监 ORG:青岛**软件有限公司;ERP事业部 TEL;CELL:18605327777 TEL;WORK:+86 0532 86887777 TEL;WORK;FAX:+86 0532 86887778 ADR;WORK:青岛市市南区香港路100号 URL:www.huiyaosoft.com EMAIL;WORK:[email protected] NOTE: X-QQ: PHOTO;ENCODING=b;TYPE=JPEG: END:VCARD
主要开发步骤如下:
(1) 绘制窗体如图21-7所示
(2) 添加引用ThoughtWorks.QRCode.dll
(3)
片段21-16使用ThoughtWorks.QRCode将名片信息输出到pictureBox1上,信息量越大,二维码图片也就越大。如果图片比较
小,信息量比较大,所生成的二维码不易识别。行31-34演示了在二维码图片中添加Logo的方法,之所以可加入Logo是因为二维码自身有一定纠错能
力。
代码片段21-16
public static Bitmap GetTwoDimensionCode(string strSource, string text, int width, int height, string fontName) { // 创建Bitmap对象 Bitmap bmp = new Bitmap(width, height); // 从image创建 Graphics对象 Graphics objGraphics = Graphics.FromImage(bmp); // 填上背景色 objGraphics.FillRectangle(Brushes.White, 0, 0, bmp.Width, bmp.Height); // ThoughtWorks.QRCode.Codec.QRCodeEncoder qrCodeEncoder = new ThoughtWorks.QRCode.Codec.QRCodeEncoder(); // 设置编码方法 qrCodeEncoder.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.BYTE; // 设置大小 qrCodeEncoder.QRCodeScale = 3; // 适用于信息量较少的情形,图像越小保存的信息量越少 // qrCodeEncoder.QRCodeScale = 4; // 设置版本 qrCodeEncoder.QRCodeVersion = 0; // 设置错误校验的级别,正因为二维码有纠错能力,才能够加入logo qrCodeEncoder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.M; Image image = qrCodeEncoder.Encode(strSource, Encoding.GetEncoding("utf-8")); // 写入二维码 int x = (int)(width - image.Width) / 2; int y = (int)(height - image.Height) / 2; objGraphics.DrawImage(image, new Point(x, y)); // 添加Logo图标 image = TwoDimensionCodeNameCard.Properties.Resources.Apps_tux_icon; x = (int)(width - image.Width) / 2; y = (int)(height - image.Height) / 2; objGraphics.DrawImage(image, new Point(x, y)); return bmp; }
代码片段21-16中,行34通过DrawImage()方法向objGraphics指定位置加入图像image,代码片段21-17演示了使用DrawString()方法向objGraphics指定位置增加字符串text的过程。
代码片段21-17
// 写入字符串 objGraphics.DrawString(text, new Font(fontName, 13, FontStyle.Bold), Brushes.Black, new PointF(43, 15));
示例下载:http://download.csdn.net/detail/daiqianjie/9472868
时间: 2024-10-07 05:29:41