C#:生成Code 128条形码(条形/空格的宽度)

Bra*_*rad 9 c# barcode code128

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

我们正在生成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
Run Code Online (Sandbox Code Playgroud)

如果我在猜测,我认为这是因为条形的宽度是基于条形码的高度而不是条形码的高度是基于文本和条形码的长度.但是我对这个规范并不太熟悉(即使经过审查),我也是C#程序员的最佳...

Yah*_*hia 15

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

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


小智 7

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

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

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

条形码需要至少生成300dpi,最好是600dpi,最好是2540dpi.

在96dpi时,您永远无法达到所提供精度所需的分辨率.

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

下一个问题是代码使用整数条宽度并转换为浮点数(yikes!).当处理低dpi(甚至高dpi但不是那么多)时,这会成为一个问题,因为某些条形/空格可能需要2个像素而有些可能需要3个像素,因此最终会得到条形码具有不均匀的条形/间距.

解决方案2:确保所有宽度相同的条/空间宽度相同.

HTH