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