C#利用 Zxing.net 生成条形码和二维码并实现打印的
功能
开篇:zxing.net 是.net 平台下编解条形码和二维码的工具。
下载地址:http://pan.baidu.com/s/1kTr3Vuf
Step1:使用 VS2010 新建一个窗体程序项目:
Step2:添加三个类:分别是 BarCodeClass.cs、
DocementBase.cs、imageDocument.cs。(下一步贴
出这些类的代码);;;;添加下载回来的引用
zxing.dll。
》说明:
《1》
BarCodeClass.cs 主要用来实现条形码和二维码的生成和解析。
《2》
条形码和二维码进行打印。
DocementBase.cs、imageDocument.cs 这两个类是用来实现对生成的
Step3:编写上一步的三个类的代码:
》BarCodeClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZXing.Common;
using ZXing;
using System.Windows.Forms;
using System.Drawing;
using System.Text.RegularExpressions;
using ZXing.QrCode;
namespace BarCode
{
class BarCodeClass
{
///
///生成条形码
///
///
///
public void CreateBarCode(PictureBoxpictureBox1,string
Contents)
{
Regexrg = new Regex("^[0-9]{12}$");
if(!rg.IsMatch(Contents))
码,需要输入 12 位数字");
{
}
MessageBox.Show("本例子采用 EAN_13 编
return;
EncodingOptionsoptions =null;
BarcodeWriterwriter =null;
options = newEncodingOptions
{
Width = pictureBox1.Width,
Height = pictureBox1.Height
};
writer = newBarcodeWriter();
writer.Format = BarcodeFormat.ITF;
writer.Options = options;
Bitmapbitmap = writer.Write(Contents);
pictureBox1.Image = bitmap;
}
///
///生成二维码
///
///
///
public void
CreateQuickMark(PictureBoxpictureBox1,string Contents)
{
if(Contents == string.Empty)
{
}
MessageBox.Show("输入内容不能为空!");
return;
EncodingOptionsoptions =null;
BarcodeWriterwriter =null;
options = newQrCodeEncodingOptions
DisableECI = true,
CharacterSet = "UTF-8",
Width = pictureBox1.Width,
Height = pictureBox1.Height
{
};
writer = newBarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;
Bitmapbitmap = writer.Write(Contents);
pictureBox1.Image = bitmap;
}
///
///解码
///
///
public void Decode(PictureBoxpictureBox1)
{
BarcodeReaderreader =new BarcodeReader();
reader.Decode((Bitmap)pictureBox1.Image);
Resultresult =
}
}
}
》DocementBase.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing.Printing;
using System.Drawing;
using System.Windows.Forms;
namespace BarCode
{
class DocementBase : PrintDocument
{
//fields
public Font Font = new Font("Verdana",10,
GraphicsUnit.Point);
//预览打印
public DialogResult showPrintPreviewDialog()
{
PrintPreviewDialog();
PrintPreviewDialogdialog =new
dialog.Document = this;
returndialog.ShowDialog();
}
//先设置后打印
public DialogResult ShowPageSettingsDialog()
PageSetupDialogdialog =new PageSetupDialog();
dialog.Document = this;
returndialog.ShowDialog();
{
}
}
}
》imageDocument.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Printing;
namespace BarCode
{
class imageDocument : DocementBase
{
privateImage _Image;
public Image Image
{
get
{
}
set
{
return_Image;
_Image = value;