生成代码128条形码(条/空格的宽度)

本文关键字:空格 代码 条形码 | 更新日期: 2023-09-27 18:05:21

所以我继承了这段代码,或者我应该说,有人开发了这段代码并继续前进,现在我们遇到了问题,我正在调查它…

我们正在生成c128条形码,在获得认证后,他们注意到一个问题,我看不出来。条/空间的宽度为10.5密耳,可接受范围为15-21密耳(1密耳= 0.001英寸)。

渲染代码是基于这个库:http://www.codeproject.com/KB/GDI-plus/GenCode128.aspx,但已经修改了一些…

生成的条形码都是字母数字,没有特殊字符。我认为栏+空格的宽度取决于被编码的字符。

下面是使用的设置:

settings.Font = new Font ( FontFamily.GenericSansSerif, 12 );
settings.TopMargin = 10
settings.BottomMargin = 10
settings.LeftMargin = 10
settings.RightMargin = 10
settings.BarCodeHeight = 80
settings.DrawText = true
settings.BarCodeToTextGapHeight = 10
settings.InterCharacterGap = 2

如果我猜,我认为这是因为酒吧的宽度是基于条形码的高度,而不是基于文本和条形码的长度条形码的高度。但是我对规范不太熟悉(即使在审查之后),而且我充其量是一个c#程序员新手…

生成代码128条形码(条/空格的宽度)

这不是一个直接的答案,但我强烈建议使用一个经过良好测试的库来生成条形码…正确使用条形码并不容易,因为有一些陷阱……有很多图书馆,有些是商业的,有些是免费的。

2个免费的。net条形码库:
http://barcoderender.codeplex.com/
http://www.codeproject.com/KB/graphics/BarcodeLibrary.aspx

哎呀,这是一个非常糟糕的条形码生成例程,您应该放弃它并搜索专门编写用于生成这些条形码的库。

用来制作位图的设备上下文的分辨率是多少?

从它的外观来看,您的代码默认使用屏幕设备上下文,它是96dpi。

条形码需要以最少300dpi生成,最好是600dpi,最理想的是2540dpi。

在96dpi时,您永远无法达到给定精度所需的分辨率。

解决方案1:修改代码以使用高分辨率的打印机设备上下文,并以该分辨率制作位图。目前你的代码只是使用了一个任意计算的宽度。

下一个问题是代码使用整型条宽度并强制转换为浮点数(啊哈!)这在处理低dpi(甚至高dpi但不是那么多)时成为一个问题,因为有些条/空格可能占用2像素,有些可能占用3像素,所以你最终得到的条形码有不均匀的条/空格。

解决方案2:确保所有假定相同宽度的栏位/空格都相同宽度

HTH

如果你不想使用免费的条形码库,按照Yahia的建议,我认为增加:设置的值。InterCharacterGap应该可以解决这个问题。

然而,我认为你应该看看那些库。这样,您将有更少的代码需要维护,将能够更容易地适应您的软件,如果条形码的类型需要改变,您可能能够立即支持它,而不是重新发明轮子。