• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#生成二维码名片

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#线程发布时间:2022-07-14
下一篇:
[转][C#]无法创建虚拟目录。ASP.NET2.0尚未在Web服务器上注册。发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap