TBarCode .NET 常见问题
如何控制条码尺寸?
如何控制条码尺寸?
您可以在两种尺寸模式之间进行选择:
- 尺寸模式 Fit to Bounding Rectangle(适配边界矩形)
条码通过自动计算模块宽度来适配边界矩形。模块宽度属性此时仅是一个可读写的数值,不会被自动更新。 - 尺寸模式 Custom Module Width(自定义模块宽度)
条码尺寸取决于以 [毫米] 为单位设置的模块宽度属性。在模块宽度不起作用的维度上(例如一维码的高度),条码仍会适配边界矩形。
在使用 CalculateModuleWidth 或 CalculateBarcodeSize 等函数进行尺寸计算时,边界矩形必须以 [毫米] 为单位提供。
在进行任何与位图或设备上下文相关的绘制操作时,边界矩形必须以 [像素] 为单位提供。
推荐的工作流程
对于任何操作,请先设置矩形,然后再执行相应的操作或计算。
建议先统一以 [毫米] 为单位完成所有操作;如果需要绘制到位图上,再结合您所设置的 DPI,将毫米换算为像素。
- 设置条码类型和条码数据
- 以 [毫米] 为单位设置边界矩形,设置尺寸模式,以及(如适用)模块宽度
- 如适用,设置 DPI
- 如果您使用自定义模块宽度:请执行尺寸获取/计算函数(返回值以毫米为单位)。这是必要的,因为您的边界矩形可能无法反映条码的实际尺寸。
- 如果需要位图,请将返回的尺寸换算为像素,并以像素为单位设置边界矩形
请使用 BoundingRectangleF,它使用“float”类型而非整数类型。
对于条码尺寸没有特定要求、需要创建位图的场景,还可以使用函数 CalculateOptimalBitmapSize。该函数可以避免量化误差,并提升图像质量。
barcode.Dpi = 100; barcode.SizeMode = SizeMode.FitToBoundingRectangle; Size optimalSize = barcode.CalculateOptimalBitmapSize(null, 1, 1); // 1 Module = 1 Pixel barcode.BoundingRectangle = new Rectangle(0, 0, optimalSize.Width, optimalSize.Height); barcode.Draw(filename, ImageType.Jpg);