摘自《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:admin@huiyaosoft.com
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, , , 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 = ;
// 适用于信息量较少的情形,图像越小保存的信息量越少
// qrCodeEncoder.QRCodeScale = 4;
// 设置版本
qrCodeEncoder.QRCodeVersion = ;
// 设置错误校验的级别,正因为二维码有纠错能力,才能够加入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) / ;
int y = (int)(height - image.Height) / ;
objGraphics.DrawImage(image, new Point(x, y));
// 添加Logo图标
image = TwoDimensionCodeNameCard.Properties.Resources.Apps_tux_icon;
x = (int)(width - image.Width) / ;
y = (int)(height - image.Height) / ;
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, , FontStyle.Bold),
Brushes.Black, new PointF(, ));

示例下载:http://download.csdn.net/detail/daiqianjie/9472868

C#生成二维码名片的更多相关文章

  1. 利用google api生成二维码名片例子

    二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码.堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成:矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1” ...

  2. 利用google api生成二维码名片

    利用google api生成二维码名片 二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码.堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成:矩阵式二维条码以矩阵的形式组成,在矩 ...

  3. ThoughtWorks.QRCode 生成二维码名片(实现二维码内容换行)

    最近在写一个很简单的功能,按照Vcard的格式,生成二维码名片.本来以为分分钟完事的事情,替换数据,直接调用dll去生成二维码. 测试时,发现生成的二维码使用微信扫描得到的名片信息为空,反向解析发现, ...

  4. 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...

    版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...

  5. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    http://blog.csdn.net/lidew521/article/details/24441825

  6. QRCode生成二维码,jq QRCode生成二维码,QRCode生成电子名片

    [QRCode官网]http://phpqrcode.sourceforge.net/ PHP QRCode生成二维码 官网下载QRCode源码包,引入源码包中的 qrlib.php . <?p ...

  7. iOS开发之生成二维码

    一.二维码的生成 从iOS7开始集成了二维码的生成和读取功能 此前被广泛使用的zbarsdk目前不支持64位处理器   1.二维码的内容(传统的条形码只能放数字) 纯文本 名片 URL   2.生成二 ...

  8. 【Demo】 生成二维码 和 条形码

    条形码 和 二维码 对比 一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准. 在水平和垂直方向的二维空间存储信息的条形码, 称为 ...

  9. PHP生成二维码【谷歌API+qrcode+圆角Logo】

    方法一:谷歌二维码API 接口地址:https://chart.googleapis.com/chart 官方文档:https://developers.google.com/chart/infogr ...

随机推荐

  1. 【转】suid sgid 详解

    转自:http://www.cnblogs.com/fhefh/archive/2011/09/20/2182155.html 如果你对SUID.SGID仍有迷惑可以好好参考一下! Copyright ...

  2. WINAPI 变量(2861个)

    WINAPI 变量(2861个)   这是从 c:\Program Files\Windows Kits\8.1\Include\um\WinUser.h 这个文件 中提取的 CTRL+F 查看变量所 ...

  3. paip.提升性能---- 网站并发数的总结.txt

    paip.提升性能---- 网站并发数的总结.txt 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.n ...

  4. ME21N/ME22N/ME23N屏幕增强BADI ME_GUI_PO_CUST

    最近想更深入学习下classic BADI, 以前没玩过BADI屏幕增强, 所以决定玩一下. 这次的屏幕增强主要用到两个BADI: ME_GUI_PO_CUST和ME_PROCESS_PO_CUST ...

  5. PAT 1016

    1016. Phone Bills (25) A long-distance telephone company charges its customers by the following rule ...

  6. java_利用session校验图片认证码

    RegisterServlet:检验server,client验证码是否一致 ImageServlet: 产生验证码 <!DOCTYPE html> <html> <he ...

  7. [COCOS2DX]官网helloworld在VS2012中的部署

    VS2012.JDK.Eclipse(和adt插件)之类的基本安装这里直接略过. 以下为对cocos2dx 3.5版本在VS2012中部署的摸索: 开源项目“愤怒的小鸟”原来设置: .;..\Clas ...

  8. sqlite数据下载链接地址

    链接: http://pan.baidu.com/s/1pJN1abT 密码: yjg5

  9. 如何使Android Studio项目发布到Jcenter中

    Android仓库 简单的普及下关于android的依赖仓库,有两种分别是Jcenter与Maven Central其实不管是Jcenter还是Maven Central都是Maven库. Jcent ...

  10. Android_listView_BaseAdapter

    layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...