2016-01-04 284 views
-2

使用这个代码行波纹管生成QR码图像

private void button1_Click(object sender, EventArgs e) 
    { 
     string barcode = textBox1.Text; 
     Bitmap bitmap = new Bitmap(barcode.Length * 40, 150); 

     using (Graphics graphics = Graphics.FromImage(bitmap)) 
     { 
      Font oFont = new System.Drawing.Font("IDAutomationHC39M", 20); 
      PointF point = new PointF(2f, 2f); 
      SolidBrush white = new SolidBrush(Color.White); 
      SolidBrush black = new SolidBrush(Color.Black); 
      graphics.FillRectangle(white,0,0,bitmap.Width,bitmap.Height); 
      graphics.DrawString("*" + barcode + "*", oFont, black, point); 
     } 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      bitmap.Save(ms,ImageFormat.Png); 
      pictureBox1.Image = bitmap; 
      pictureBox1.Height = bitmap.Height; 
      pictureBox1.Width = bitmap.Width; 
     } 
    } 

后我能够产生该输出图像条形码

enter image description here

我想要生成条形码输出像图像下面我怎么能达到这个

enter image description here

+0

这是QR码(https://开头en.wikipedia.org/wiki/QR_code) – Idos

+0

应该真的被关闭为“搜索工具/库“,但是因为已经存在关于相同搜索的问题(关键问题),而不是关闭原因错误。 –

+0

首先使用Google,查看您的问题是否已被问及回答! –

回答

1

你可以做这样的

private System.Drawing.Image GenerateQRCode(string content, int size) 
{ 
    QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.H); 
    QrCode qrCode; 
    encoder.TryEncode(content, out qrCode); 

    GraphicsRenderer gRenderer = new GraphicsRenderer(new FixedModuleSize(4, QuietZoneModules.Two), System.Drawing.Brushes.Black, System.Drawing.Brushes.White); 
    //Graphics g = gRenderer.Draw(qrCode.Matrix); 

    MemoryStream ms = new MemoryStream(); 
    gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Bmp, ms); 

    var imageTemp = new Bitmap(ms); 

    var image = new Bitmap(imageTemp, new System.Drawing.Size(new System.Drawing.Point(size, size))); 

    //image.Save("file.bmp", ImageFormat.Bmp); 

    return (System.Drawing.Image)image; 
} 

Implementaion

string barcode = textBox1.Text; 
codeImage = GenerateQRCode(barcode, 120); 
// you can make a smaller image as per your need 
rect = new System.Drawing.Rectangle(1080, 530, codeImage.Width, codeImage.Height); 
using (Graphics g = Graphics.FromImage(picEdit)) 
{ 
    g.SmoothingMode = SmoothingMode.AntiAlias; 
    g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    g.PixelOffsetMode = PixelOffsetMode.HighQuality; 
    g.DrawImage(codeImage, rect); 
} 

不要忘记添加

using Gma.QrCodeNet.Encoding; 
using Gma.QrCodeNet.Encoding.Windows.Render; 

GitHub: QrCode.Net

+0

QrCode和QrEncoder在哪些命名空间或库下面? –

+0

在'主'线程中发布这个答案这个解决方案没有提到那里... btw我没有投票 –