彩票走势图

条码控件TBarCode SDK使用教程:如何实现线形条码优化

原创|使用教程|编辑:郝浩|2013-05-13 14:18:37.000|阅读 588 次

概述:我们首先需要根据目标设备像素计算条码的尺寸。接下来对这个尺寸(实际上只有宽度)加以调整,以便条码的每个条和每个间隙都完全匹配输出光栅。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

在本示例教程中将会按照下面的规范优化线形条码的输出:

Barcode width = 60 mm

Barcode height = 30 mm

Resolution of the output device = 200 dpi (dots per inch)

在此规范基础上,我们首先需要根据目标设备像素计算条码的尺寸。接下来对这个尺寸(实际上只有宽度)加以调整,以便条码的每个条和每个间隙都完全匹配输出光栅。高度调整不是必需的,因为扫描过程通常是不受条形码高度的影响。

首先我们计算条码宽度:

因此需要把宽度(默认单位mm)转换成英寸为单位。然后根据输出设备的分辨率(dots per inch)计算结果。

 60 / 25.4 * 200 @ 472.44 dots (or pixels)

》》》免费下载TBarCode SDK最新版

然后我们计算出模块宽度并采用,以便所有的条和空隙都能正常显示:

1) 指定条形码类型和数据等等。

2) 指定条形码尺寸。

计算以优化条码质量。

因此尺寸必须转换为设备像素,并符合输出设备的分辨率。

LONG

ldpi   = 200;                 ;        

LONG lBarcodeWidth = (LONG)ConvertMMToPixel (60.0f, ldpi); // 60 mm --> 472.44pix

LONG lBarcodeHeight = (LONG)ConvertMMToPixel (30.0f, ldpi); // 30 mm --> 236.22pix

3) 获取水平模块数。

这个函数返回计算给定条形码的模块数量。这通常是一个整数!对于非整数值,将不进行优化!

DOUBLE dCountModules  = ::BCGetCountModules ( pBC );

DOUBLE dModuleWidth;

avoid division by zero if( dCountModules > 0.0)

4) 计算当前模块的宽度:

--> 根据水平模块数平分条码宽度。

 dModuleWidth = (DOUBLE)lBarcodeWidth/dCountModules;

5) 优化条码宽度:

对于优化后的条码,模块宽度一定是单个设备像素的倍数。

因此。所有小数点后的数值都将被省去。

种种情况下,数值将会以ceil-function进一法取整。

dModuleWidth = ceil ( dModuleWidth );

6) 优化之后的模块宽度就已经完成。

计算整个条码的宽度。

 lBarcodeWidth = (LONG)(dCountModules * dModuleWidth);

7) 优化之后的条码宽度就可以用来创建或者以图片的形式保存条码。

在这个示例中条码将会以图片的形式保存。

::BCSaveImage ( pBC, "C:\\ MyBarcode.BMP", eIMBmp, lBarcodeWidth, lBarcodeHeight, ldpi, ldpi );


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP