標籤:
摘自《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
C#產生二維碼名片