1. 项目概述
今天要分享的是一个基于C#开发的二维码/条形码生成打印工具,特别适合工控领域的朋友们直接集成到现有系统中使用。这个工具的核心功能是能够根据变量动态生成带有自定义抬头的二维码或条形码,并支持直接打印或保存为图片文件。
在实际工控场景中,我们经常需要为产品、设备或物料生成带有标识信息的条码标签。传统做法是先设计好标签模板,再手动填入内容,效率低下且容易出错。而这个工具通过编程方式实现了全自动化生成,特别适合批量打印场景。
2. 核心功能解析
2.1 技术选型与依赖库
选择ZXing.Net库作为条码生成的核心组件,主要基于以下考虑:
- 成熟稳定:ZXing是Google开源的条码处理库,经过多年迭代已经非常成熟
- 支持广泛:可生成QR Code、Code 128、EAN-13等30多种条码格式
- 性能优异:生成速度极快,适合批量处理
- 跨平台:虽然我们这里用C#实现,但ZXing也支持Java、Android等平台
安装方法很简单,在Visual Studio中通过NuGet包管理器搜索"ZXing.Net"安装即可。建议选择最新稳定版本(目前是0.16.8)。
2.2 核心类设计
整个工具的核心是BarcodeGenerator类,其构造函数接收五个关键参数:
csharp复制public BarcodeGenerator(string text, BarcodeFormat format,
int width, int height, string header)
{
_text = text; // 要编码的文本内容
_format = format; // 条码类型(QR_CODE, CODE_128等)
_width = width; // 条码宽度(像素)
_height = height; // 条码高度(像素)
_header = header; // 要显示的抬头文本
}
这种设计使得类的使用非常灵活,可以通过参数控制生成各种规格的条码。
3. 实现细节详解
3.1 条码生成过程
GenerateBarcode方法是核心实现,其工作流程如下:
- 创建
BarcodeWriter实例并配置参数 - 调用
Write方法生成原始条码位图 - 创建新位图(高度增加50像素用于显示抬头)
- 使用GDI+将原始条码和抬头文本合成到新位图中
- 返回合成后的完整位图
关键代码片段:
csharp复制var writer = new BarcodeWriter
{
Format = _format,
Options = new EncodingOptions
{
Width = _width,
Height = _height,
Margin = 10 // 增加边距提高可读性
}
};
提示:设置Margin属性很重要,可以避免条码边缘被裁剪,特别是打印时。
3.2 抬头处理技巧
抬头处理有几个值得注意的实现细节:
- 动态计算高度:不是固定增加50像素,而是根据字体大小动态计算
- 文本居中显示:使用
StringFormat实现文本水平居中 - 抗锯齿处理:设置
TextRenderingHint提高文本显示质量
改进后的代码:
csharp复制// 计算抬头所需高度
var headerHeight = (int)g.MeasureString(_header, font).Height + 10;
// 创建新位图(高度=条码高度+抬头高度)
var newBitmap = new Bitmap(result.Width, result.Height + headerHeight);
// 设置文本格式(居中显示)
var format = new StringFormat {
Alignment = StringAlignment.Center
};
// 绘制文本(居中)
g.DrawString(_header, font, Brushes.Black,
new RectangleF(0
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容