原創(chuàng)|使用教程|編輯:郝浩|2013-05-13 14:18:37.000|閱讀 638 次
概述:我們首先需要根據(jù)目標(biāo)設(shè)備像素計(jì)算條碼的尺寸。接下來(lái)對(duì)這個(gè)尺寸(實(shí)際上只有寬度)加以調(diào)整,以便條碼的每個(gè)條和每個(gè)間隙都完全匹配輸出光柵。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在本示例教程中將會(huì)按照下面的規(guī)范優(yōu)化線形條碼的輸出:
Barcode width = 60 mm
Barcode height = 30 mm
Resolution of the output device = 200 dpi (dots per inch)
在此規(guī)范基礎(chǔ)上,我們首先需要根據(jù)目標(biāo)設(shè)備像素計(jì)算條碼的尺寸。接下來(lái)對(duì)這個(gè)尺寸(實(shí)際上只有寬度)加以調(diào)整,以便條碼的每個(gè)條和每個(gè)間隙都完全匹配輸出光柵。高度調(diào)整不是必需的,因?yàn)閽呙柽^(guò)程通常是不受條形碼高度的影響。
因此需要把寬度(默認(rèn)單位mm)轉(zhuǎn)換成英寸為單位。然后根據(jù)輸出設(shè)備的分辨率(dots per inch)計(jì)算結(jié)果。
60 / 25.4 * 200 @ 472.44 dots (or pixels)
1) 指定條形碼類型和數(shù)據(jù)等等。
2) 指定條形碼尺寸。
計(jì)算以優(yōu)化條碼質(zhì)量。
因此尺寸必須轉(zhuǎn)換為設(shè)備像素,并符合輸出設(shè)備的分辨率。
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) 獲取水平模塊數(shù)。
這個(gè)函數(shù)返回計(jì)算給定條形碼的模塊數(shù)量。這通常是一個(gè)整數(shù)!對(duì)于非整數(shù)值,將不進(jìn)行優(yōu)化!
DOUBLE dCountModules = ::BCGetCountModules ( pBC );
DOUBLE dModuleWidth;
avoid division by zero if( dCountModules > 0.0)
4) 計(jì)算當(dāng)前模塊的寬度:
--> 根據(jù)水平模塊數(shù)平分條碼寬度。
dModuleWidth = (DOUBLE)lBarcodeWidth/dCountModules;
5) 優(yōu)化條碼寬度:
對(duì)于優(yōu)化后的條碼,模塊寬度一定是單個(gè)設(shè)備像素的倍數(shù)。
因此。所有小數(shù)點(diǎn)后的數(shù)值都將被省去。
種種情況下,數(shù)值將會(huì)以ceil-function進(jìn)一法取整。
dModuleWidth = ceil ( dModuleWidth );
6) 優(yōu)化之后的模塊寬度就已經(jīng)完成。
計(jì)算整個(gè)條碼的寬度。
lBarcodeWidth = (LONG)(dCountModules * dModuleWidth);
7) 優(yōu)化之后的條碼寬度就可以用來(lái)創(chuàng)建或者以圖片的形式保存條碼。
在這個(gè)示例中條碼將會(huì)以圖片的形式保存。
::BCSaveImage ( pBC, "C:\\ MyBarcode.BMP", eIMBmp, lBarcodeWidth, lBarcodeHeight, ldpi, ldpi );
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)