下载地址: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 多种条码格式的生成
原文地址:http://www.cnblogs.com/datacool/p/datacool_2017_zxing.html