C#生成二维码名片

摘自《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, 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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值