項目地址:https://archive.codeplex.com/?p=qrcodenet
QrCode使用方法:
新建項目添加對類庫的引用,然后引入Gma.QrCodeNet.Encoding命名空間。
下面直接是實現方式:
/// <summary> /// 創建二維碼 /// </summary> /// <param name="content"></param> /// <param name="name"></param> /// <returns></returns> public static byte[] CreateBytes(string content, string name) { var bytes = qrCoderService.CreateQrCode(content); var memory = new MemoryStream(bytes); ImageUtility util = new ImageUtility(); var bitmap = util.InsertWords(new Bitmap(new Bitmap(memory)), name); using (MemoryStream stream = new MemoryStream()) { bitmap.Save(stream, ImageFormat.Png); byte[] data = new byte[stream.Length]; stream.Seek(0, SeekOrigin.Begin); stream.Read(data, 0, Convert.ToInt32(stream.Length)); return data; } }
public class ImageUtility { /// <summary> /// 二維碼下面加上文字 /// </summary> /// <param name="qrImg">QR圖片</param> /// <param name="content">文字內容</param> /// <param name="n"></param> /// <returns></returns> public Bitmap InsertWords(Bitmap qrImg, string content = "") { Bitmap backgroudImg = new Bitmap(qrImg.Width, qrImg.Height); backgroudImg.MakeTransparent(); Graphics g2 = Graphics.FromImage(backgroudImg); g2.Clear(Color.Transparent); //畫二維碼到新的面板上 g2.DrawImage(qrImg, 0, 0); if (!string.IsNullOrEmpty(content)) { FontFamily fontFamily = new FontFamily("楷體"); Font font1 = new Font(fontFamily, 20f, FontStyle.Bold, GraphicsUnit.Pixel); //文字長度 int strWidth = (int)g2.MeasureString(content, font1).Width; //總長度減去文字長度的一半 (居中顯示) int wordStartX = (qrImg.Width - strWidth) / 2; int wordStartY = qrImg.Height - 30; g2.DrawString(content, font1, Brushes.Black, wordStartX, wordStartY); } g2.Dispose(); return backgroudImg; } }