原創|使用教程|編輯:郝浩|2013-05-13 14:18:37.000|閱讀 638 次
概述:我們首先需要根據目標設備像素計算條碼的尺寸。接下來對這個尺寸(實際上只有寬度)加以調整,以便條碼的每個條和每個間隙都完全匹配輸出光柵。
# 界面/圖表報表/文檔/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)
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@fc6vip.cn
文章轉載自:慧都控件網