下载地址:http://zxingnet.codeplex.com/

zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便。

本文主要说明一下多种类型条码的生成。

适用的场景,标签可视化设计时,自定义条码类型,预览。

遍历zxing支持的全部条码类型

if (rb == rb1wm)
{
foreach (BarcodeFormat format in Enum.GetValues(typeof(BarcodeFormat)))
{
if (format != BarcodeFormat.All_1D)
cbxBarcodeFormat.Items.Add(format.ToString());
}
cbxBarcodeFormat.Items.Remove(BarcodeFormat.QR_CODE.ToString());
cbxBarcodeFormat.Items.Remove(BarcodeFormat.AZTEC.ToString());
cbxBarcodeFormat.Items.Remove(BarcodeFormat.DATA_MATRIX.ToString());
cbxBarcodeFormat.Items.Remove(BarcodeFormat.PDF_417.ToString());
}
if (rb == rb2wm)
{
cbxBarcodeFormat.Items.Add(BarcodeFormat.QR_CODE.ToString());
cbxBarcodeFormat.Items.Add(BarcodeFormat.AZTEC.ToString());
cbxBarcodeFormat.Items.Add(BarcodeFormat.DATA_MATRIX.ToString());
cbxBarcodeFormat.Items.Add(BarcodeFormat.PDF_417.ToString());
}

根据选择的类型生成条码

Bitmap bitmap = new Bitmap(pbxBarcode.Width, pbxBarcode.Height);
Graphics g = Graphics.FromImage(bitmap);
g.Clear(Color.White);
Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), cbxBarcodeFormat.SelectedItem.ToString());
try
{
var options = new ZXing.Common.EncodingOptions
{
PureBarcode = !chxDisplayBarcode.Checked
};
#region 根据条码类型Write Image
switch (Format)
{
case BarcodeFormat.QR_CODE:
#region QRCode
if (cbxErrorLevel.SelectedItem.ToString().Equals("L"))
ErrorCorrectionLevel = QR_ErrorCorrectionLevel.L;
if (cbxErrorLevel.SelectedItem.ToString().Equals("H"))
ErrorCorrectionLevel = QR_ErrorCorrectionLevel.H;
if (cbxErrorLevel.SelectedItem.ToString().Equals("M"))
ErrorCorrectionLevel = QR_ErrorCorrectionLevel.M;
if (cbxErrorLevel.SelectedItem.ToString().Equals("Q"))
ErrorCorrectionLevel = QR_ErrorCorrectionLevel.Q;
ErrorCorrectionLevel level = null;
switch (ErrorCorrectionLevel)
{
case QR_ErrorCorrectionLevel.H:
level = ZXing.QrCode.Internal.ErrorCorrectionLevel.H;
break;
case QR_ErrorCorrectionLevel.M:
level = ZXing.QrCode.Internal.ErrorCorrectionLevel.M;
break;
case QR_ErrorCorrectionLevel.L:
level = ZXing.QrCode.Internal.ErrorCorrectionLevel.L;
break;
case QR_ErrorCorrectionLevel.Q:
level = ZXing.QrCode.Internal.ErrorCorrectionLevel.Q;
break;
}
QrCodeEncodingOptions qr_options = new QrCodeEncodingOptions
{
Margin = 0,
DisableECI = true,
CharacterSet = "UTF-8",
ErrorCorrection = level,
PureBarcode = !chxDisplayBarcode.Checked,
Width = pbxBarcode.Width,
Height = pbxBarcode.Height
};
var qrWriter = new ZXing.BarcodeWriter();
qrWriter.Format = BarcodeFormat.QR_CODE;
qrWriter.Options = qr_options;
#endregion
bitmap = qrWriter.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(qrWriter.Options, Format, bitmap);
break;
case BarcodeFormat.PDF_417:
#region PDF417
PDF417EncodingOptions pdf_options = new PDF417EncodingOptions
{
Margin = 0,
DisableECI = true,
CharacterSet = "UTF-8",
Width = pbxBarcode.Width,
Height = pbxBarcode.Height,
PureBarcode = !chxDisplayBarcode.Checked
};
var pdf417Writer = new ZXing.BarcodeWriter();
pdf417Writer.Format = BarcodeFormat.PDF_417;
pdf417Writer.Options = pdf_options;
#endregion
bitmap = pdf417Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(pdf417Writer.Options, Format, bitmap);
break;
case BarcodeFormat.DATA_MATRIX:
#region DataMatrix
DatamatrixEncodingOptions dataMatrix_options = new DatamatrixEncodingOptions
{
Margin = 0,
SymbolShape = (ZXing.Datamatrix.Encoder.SymbolShapeHint)(Enum.Parse(typeof(ZXing.Datamatrix.Encoder.SymbolShapeHint), cbxDataMatrixOption.SelectedItem.ToString())),
Width = pbxBarcode.Width,
Height = pbxBarcode.Height,
PureBarcode = !chxDisplayBarcode.Checked,
};
var dataMatrixWriter = new ZXing.BarcodeWriter();
dataMatrixWriter.Format = BarcodeFormat.DATA_MATRIX;
dataMatrixWriter.Options = dataMatrix_options;
#endregion
bitmap = dataMatrixWriter.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(dataMatrixWriter.Options, Format, bitmap);
break;
case BarcodeFormat.AZTEC:
#region Aztec
ZXing.Aztec.AztecEncodingOptions aztecEncodingOptions = new ZXing.Aztec.AztecEncodingOptions
{
Margin = 0,
ErrorCorrection = 2,
PureBarcode = !chxDisplayBarcode.Checked,
Layers = 16
};
var aztecWriter = new ZXing.BarcodeWriter();
aztecWriter.Format = BarcodeFormat.AZTEC;
aztecWriter.Options = aztecEncodingOptions;
#endregion
bitmap = aztecWriter.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(aztecWriter.Options, Format, bitmap);
break;
case BarcodeFormat.CODE_128:
#region Code128
ZXing.OneD.Code128EncodingOptions code128_options = new ZXing.OneD.Code128EncodingOptions
{
Margin = 0,
PureBarcode = !chxDisplayBarcode.Checked,
Width = pbxBarcode.Width,
Height = pbxBarcode.Height,
ForceCodesetB = true
};
var code128_Writer = new ZXing.BarcodeWriter();
code128_Writer.Format = BarcodeFormat.CODE_128;
code128_Writer.Options = code128_options;
#endregion
bitmap = code128_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(code128_Writer.Options, Format, bitmap);
break;
case BarcodeFormat.CODABAR:
var codeBar_Writer = new ZXing.BarcodeWriter();
codeBar_Writer.Format = BarcodeFormat.CODABAR;
codeBar_Writer.Options = options;
bitmap = codeBar_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.EAN_13:
var ean13_Writer = new ZXing.BarcodeWriter();
ean13_Writer.Format = BarcodeFormat.EAN_13;
ean13_Writer.Options = options;
bitmap = ean13_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.EAN_8:
var ean8_Writer = new ZXing.BarcodeWriter();
ean8_Writer.Format = BarcodeFormat.EAN_8;
ean8_Writer.Options = options;
bitmap = ean8_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.CODE_39:
var code39_Writer = new ZXing.BarcodeWriter();
code39_Writer.Format = BarcodeFormat.CODE_39;
code39_Writer.Options = options;
bitmap = code39_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.UPC_A:
var upca_Writer = new ZXing.BarcodeWriter();
upca_Writer.Format = BarcodeFormat.UPC_A;
upca_Writer.Options = options;
bitmap = upca_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.UPC_E:
var upce_Writer = new ZXing.BarcodeWriter();
upce_Writer.Format = BarcodeFormat.UPC_E;
upce_Writer.Options = options;
bitmap = upce_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.MSI:
var msi_Writer = new ZXing.BarcodeWriter();
msi_Writer.Format = BarcodeFormat.MSI;
msi_Writer.Options = options;
bitmap = msi_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.ITF:
var itf_Writer = new ZXing.BarcodeWriter();
itf_Writer.Format = BarcodeFormat.ITF;
itf_Writer.Options = options;
bitmap = itf_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.PLESSEY:
var plessey_Writer = new ZXing.BarcodeWriter();
plessey_Writer.Format = BarcodeFormat.PLESSEY;
plessey_Writer.Options = options;
bitmap = plessey_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
case BarcodeFormat.MAXICODE:
var code_Writer = new ZXing.BarcodeWriter();
code_Writer.Format = BarcodeFormat.MAXICODE;
code_Writer.Options = options;
bitmap = code_Writer.Write(tbxBarcodeValue.Text.Trim());
BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
break;
default:
throw new Exception("条码格式暂不支持!");
}
#endregion
}
catch (Exception ex)
{
MessageBox.Show("编码生成错误:" + ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
pbxBarcode.Image = bitmap;
}

  

zxing .net 多种条码格式的生成的更多相关文章

  1. C# - VS2019调用ZXing.NET实现条码、二维码和带有Logo的二维码生成

    前言 C# WinFrm程序调用ZXing.NET实现条码.二维码和带有Logo的二维码生成. ZXing.NET导入 GitHub开源库 ZXing.NET开源库githib下载地址:https:/ ...

  2. java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例

    java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍   我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...

  3. ini格式数据生成与解析具体解释

    ini格式数据生成与解析具体解释 1.ini格式数据长啥样? watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/ ...

  4. python 将png图片格式转换生成gif动画

    先看知乎上面的一个连接 用Python写过哪些[脑洞大开]的小工具? https://www.zhihu.com/question/33646570/answer/157806339 这个哥们通过爬气 ...

  5. C# - VS2019 WinFrm程序调用ZXing.NET实现条码、二维码和带有Logo的二维码的识别

    前言 C# WinFrm程序调用ZXing.NET实现条码.二维码和带有Logo的二维码的识别. ZXing.NET导入 GitHub开源库 ZXing.NET开源库githib下载地址:https: ...

  6. 2018-8-10-VisualStudio-2017-项目格式-自动生成版本号

    title author date CreateTime categories VisualStudio 2017 项目格式 自动生成版本号 lindexi 2018-08-10 19:16:52 + ...

  7. Android zxing 解析二维码,生成二维码极简demo

    zxing 官方的代码很多,看起来很费劲,此demo只抽取了有用的部分,实现了相机预览解码,解析本地二维码,生成二维码三个功能. 简化后的结构如下: 废话少说直接上代码: BaseDecodeHand ...

  8. 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)

    public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...

  9. JAVA中通过时间格式来生成唯一的文件名

    有时候我们需要截图,在要截图时,有人用到了时间格式,但是时间格式中的:在文件名称中是不被允许的字符,所以就会报错,如何生成唯一的时间文件名: package com.demo; import java ...

随机推荐

  1. Android中使用ContentProvider进行跨进程方法调用

    原文同一时候发表在我的博客 点我进入还能看到很多其它 需求背景 近期接到这样一个需求,须要和别的 App 进行联动交互,比方下载器 App 和桌面 App 进行联动.桌面的 App 能直接显示下载器 ...

  2. ccbpm工作流引擎是怎样支持多种流程模式的

    前言: 在BPM领域支持流程运转的理论模型有多种.有的21种.28种.32种. 每种模式都代表了这样的模式的理论设计者研究者的人员主张.思想.这些模式尽可能的,全然去覆盖到现实生产.工作.应用上的流程 ...

  3. SYSAUX表空间使用率高问题处理

    SYSAUX表空间做为SYSTEM表空间的辅助表空间,主要存放EM相关的内容以及表统计信息,AWR快照,审计信息等,而假设SYSAUX表空间在默认条件下你假设不做不论什么配置,随着时间的推移.会膨胀的 ...

  4. gunicorn 信号处理(SIGHUP,SIGUSR2)

    在这篇文章中,提到了Master进程对信号的处理函数,其中有两个信号比较有意思. SIGHUP:用来热更新(Reload)应用 SIGUSR2:用来在线升级(upgrade on the fly)gu ...

  5. mac下通过mdfind命令搜索文件

    mdfind命令就是Spotlight功能的终端界面,这意味着如果Spotlight被禁用,mdfind命令也将无法工作.mdfind命令非常迅速.高效.最基本的使用方法是: mdfind -name ...

  6. Android开发——使用LitePal开源数据库

    前言:之前使用Android内置的数据库,感觉一大堆SQL语句,一不小心就错了,很难受,学习了这个LItePal的开源数据库,瞬间觉得Android内置的数据库简直是垃圾般的存在 LitePal Gi ...

  7. IEEE1588协议简介

    IEEE1588协议,又称PTP(precise time protocol,精确时间协议),可以达到亚微秒级别时间同步精度,于2002年发布version1,2008年发布version2. IEE ...

  8. SoapUI模拟REST MockService

    一.新建REST工程 二.添加URI 物流查询接口测试地址:http://www.kuaidi100.com/query?type=快递公司代号&postid=快递单号 三.输入入参,测试一下 ...

  9. 添加用户useradd,给用户设置修改密码passwd,修改用户信息usermod,修改用户密码状态chage,删除用户userdel,查询用户及组id,切换用户su,查看当前环境变量env

    useradd 用户名 passwd 用户名,给指定用户设密码 passwd给当前用户设密码 添加一个用户系统会自动在以下文件或目录创建对应用户信息: [root@localhost ~]# grep ...

  10. Python进阶之迭代器和生成器

    可迭代对象 Python中任意的对象,只要它定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象.简单来说,可迭代对象就是能 ...