C#实现生成(条码/二维码)

winfrom窗体实现生成(条码/二维码)

程子 orange of backroom 2月22日

一码在手,天下我有

如今是二维码遍地的时代,扫一扫方便了大家的生活,今天我们就用C#在winfrom窗体上制作维码

那么维码是什么呢,其实就是机器看的懂的但又不想让人看到的一个技术,比如你拿手机对着一本书的文字扫描,是什么都扫不到的(但是当今技术的发展已经可以了,但并不能说替代维码),废话不多说了

 

制作维码有很多种方法

 

在工程中引用ZXing.Net

在项目中,点击项目名称右键-->管理NuGet程序包,打开NuGet包管理器窗口,进行搜索下载即可,可在搜索框输入ZXing

    private void button1_Click(object sender, EventArgs e)

        {

            EncodingOptions encodeOption = new EncodingOptions();

            encodeOption.Height = 50; // 高度、宽度

            encodeOption.Width = 120;

            ZXing.BarcodeWriter wr = new BarcodeWriter();

            wr.Options = encodeOption;

            wr.Format = BarcodeFormat.CODE_39; //  条形码规格

            Bitmap img = wr.Write("D1234B678A"); // 生成图片

  string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-" + "test" + ".jpg";

       img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            ZXing.QrCode.QrCodeEncodingOptions qrEncodeOption = new ZXing.QrCode.QrCodeEncodingOptions();

            qrEncodeOption.CharacterSet = "UTF-8"; // 设置编码格式,否则读取'中文'乱码

            qrEncodeOption.Height = 30;

            qrEncodeOption.Width = 30;

            qrEncodeOption.Margin = 1; // 设置周围空白边距

 

            // 2.生成条形码图片并保存

            ZXing.BarcodeWriter wr = new BarcodeWriter();

            wr.Format = BarcodeFormat.DATA_MATRIX; // 二维码

            wr.Options = qrEncodeOption;

            Bitmap img = wr.Write("D1234B678A");

  string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-" + "test2" + ".jpg";

  img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);

            pictureBox1.Load(filePath);

        }

 

        private void btnPrint_Click(object sender, EventArgs e)

        {

  this.printDocument1.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Custom", 220, 120);

      //PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();

            //printPreviewDialog.Document = printDocument1; 打印预览代码

            try

            {

                printDocument1.Print();

            }

            catch (Exception excep)

            {

  MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

        }

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)

        {

Bitmap img = new Bitmap(Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-" + "test" + ".jpg"));

            e.Graphics.DrawString("A1234B678A", new Font(new FontFamily("黑体"), 11), System.Drawing.Brushes.Black, 5, 5);

            e.Graphics.DrawImage(img, 10, 30);

            //e.Graphics.DrawString("D1234B678A", new Font(new FontFamily("黑体"), 11), System.Drawing.Brushes.Black, 10, 90);

            e.Graphics.DrawImage(pictureBox1.Image, 150, 80);

        }

简单代码就是这样,原文:

https://blog.csdn.net/mycoolme5/article/details/85323407

https://www.jb51.net/article/136698.htm

/// <summary> /// 生成条码 /// </summary> private void btnEncode_Click(object sender, EventArgs e) { errorProvider1.Clear(); int W = Convert.ToInt32(this.txtWidth.Text.Trim()); int H = Convert.ToInt32(this.txtHeight.Text.Trim()); int AddNum = Convert.ToInt32(this.tbAddNum.Text.Trim()); int SerialNo = Convert.ToInt32(this.tbSerialNO.Text.Trim()); CodeLib.AlignmentPositions Align = CodeLib.AlignmentPositions.CENTER; switch (cbBarcodeAlign.SelectedItem.ToString().Trim().ToLower()) { case "left": Align = CodeLib.AlignmentPositions.LEFT; break; case "right": Align = CodeLib.AlignmentPositions.RIGHT; break; default: Align = CodeLib.AlignmentPositions.CENTER; break; } CodeLib.TYPE type = CodeLib.TYPE.UNSPECIFIED; switch (cbEncodeType.SelectedItem.ToString().Trim()) { case "Code 128": type = CodeLib.TYPE.CODE128; break; case "Code 128-A": type = CodeLib.TYPE.CODE128A; break; case "Code 128-B": type = CodeLib.TYPE.CODE128B; break; default: MessageBox.Show("请指定编码类型。"); break; } try { if (type != CodeLib.TYPE.UNSPECIFIED) { b.IncludeLabel = this.chkGenerateLabel.Checked; b.Alignment = Align; switch (this.cbLabelLocation.SelectedItem.ToString().Trim().ToUpper()) { case "BOTTOMLEFT": b.LabelPosition = CodeLib.LabelPositions.BOTTOMLEFT; break; case "BOTTOMRIGHT": b.LabelPosition = CodeLib.LabelPositions.BOTTOMRIGHT; break; case "TOPCENTER": b.LabelPosition = CodeLib.LabelPositions.TOPCENTER; break; case "TOPLEFT": b.LabelPosition = CodeLib.LabelPositions.TOPLEFT; break; case "TOPRIGHT": b.LabelPosition = CodeLib.LabelPositions.TOPRIGHT; break; default: b.LabelPosition = CodeLib.LabelPositions.BOTTOMCENTER; break; } int SerialLen = this.tbSerialNO.Text.Trim().Length; string Barcodedata = ""; int i = 0; do { int zeroNum = SerialLen - SerialNo.ToString().Trim().Length; switch (zeroNum) { case 0: Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString(); break; case 1: Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString().Insert(0, "0"); break; case 2: Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString().Insert(0, "00"); break; case 3: Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString().Insert(0, "000"); break; default : Barcodedata = this.txtData.Text.Trim() + SerialNo.ToString().Insert(0, "0000"); break; } barcode.Image = b.Encode(type, Barcodedata.ToString(), W, H); i++; SerialNo++; this.Refresh(); Thread.Sleep(1000); //Printer(); //打印 //Thread.Sleep(500); } while (i< AddNum); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值