ean128與code128 條形碼 算法分析

【code128條形碼組成】算法

除終止符(STOP)由13個模塊組成外,其餘字符均由11個模塊組成ide

就是說,若是用‘1’表示黑線(實模塊),用‘0’表示白線(空模塊),那麼每表示一個字符就須要11條線,也就是11個模塊。字體

在條碼字符中,每三個條和三個空組成一個字符,終止符有四個條和三個空組成。
就是說,這11條線的顏色,是依據必定的規則將其分佈於三個黑線區和三個白線區,固然是黑白相間的。就像這樣:
            11100110100,11011011000。具體的編碼要參照碼錶,查找對應的字符或編碼。
 
【code128碼錶】其中b=>black表明黑線,s=>space表明白線
 
ID Code128A Code128B Code128C BandCode 編碼值
0 SP  SP 0 212222 bbsbbssbbss
1 ! ! 1 222122 bbssbbsbbss
2 " " 2 222221 bbssbbssbbs
3 # # 3 121223 bssbssbbsss
4 $ $ 4 121322 bssbsssbbss
5 % % 5 131222 bsssbssbbss
6 & & 6 122213 bssbbssbsss
7 ' ' 7 122312 bssbbsssbss
8 ( ( 8 132212 bsssbbssbss
9 ) ) 9 221213 bbssbssbsss
10 * * 10 221312 bbssbsssbss
11 + + 11 231212 bbsssbssbss
12 , , 12 112232 bsbbssbbbss
13 - - 13 122132 bssbbsbbbss
14 . . 14 122231 bssbbssbbbs
15 / / 15 113222 bsbbbssbbss
16 0 0 16 123122 bssbbbsbbss
17 1 1 17 123221 bssbbbssbbs
18 2 2 18 223211 bbssbbbssbs
19 3 3 19 221132 bbssbsbbbss
20 4 4 20 221231 bbssbssbbbs
21 5 5 21 213212 bbsbbbssbss
22 6 6 22 223112 bbssbbbsbss
23 7 7 23 312131 bbbsbbsbbbs
24 8 8 24 311222 bbbsbssbbss
25 9 9 25 321122 bbbssbsbbss
26 : : 26 321221 bbbssbssbbs
27 ; ; 27 312212 bbbsbbssbss
28 < < 28 322112 bbbssbbsbss
29 = = 29 322211 bbbssbbssbs
30 > > 30 212123 bbsbbsbbsss
31 ? ? 31 212321 bbsbbsssbbs
32 @ @ 32 232121 bbsssbbsbbs
33 A A 33 111323 bsbsssbbsss
34 B B 34 131123 bsssbsbbsss
35 C C 35 131321 bsssbsssbbs
36 D D 36 112313 bsbbsssbsss
37 E E 37 132113 bsssbbsbsss
38 F F 38 132311 bsssbbsssbs
39 G G 39 211313 bbsbsssbsss
40 H H 40 231113 bbsssbsbsss
41 I I 41 231311 bbsssbsssbs
42 J J 42 112133 bsbbsbbbsss
43 K K 43 112331 bsbbsssbbbs
44 L L 44 132131 bsssbbsbbbs
45 M M 45 113123 bsbbbsbbsss
46 N N 46 113321 bsbbbsssbbs
47 O O 47 133121 bsssbbbsbbs
48 P P 48 313121 bbbsbbbsbbs
49 Q Q 49 211331 bbsbsssbbbs
50 R R 50 231131 bbsssbsbbbs
51 S S 51 213113 bbsbbbsbsss
52 T T 52 213311 bbsbbbsssbs
53 U U 53 213131 bbsbbbsbbbs
54 V V 54 311123 bbbsbsbbsss
55 W W 55 311321 bbbsbsssbbs
56 X X 56 331121 bbbsssbsbbs
57 Y Y 57 312113 bbbsbbsbsss
58 Z Z 58 312311 bbbsbbsssbs
59 [ [ 59 332111 bbbsssbbsbs
60 \ \ 60 314111 bbbsbbbbsbs
61 ] ] 61 221411 bbssbssssbs
62 ^ ^ 62 431111 bbbbsssbsbs
63 _ _ 63 111224 bsbssbbssss
64 NUL ` 64 111422 bsbssssbbss
65 SOH a 65 121124 bssbsbbssss
66 STX b 66 121421 bssbssssbbs
67 ETX c 67 141122 bssssbsbbss
68 EOT d 68 141221 bssssbssbbs
69 ENQ e 69 112214 bsbbssbssss
70 ACK f 70 112412 bsbbssssbss
71 BEL g 71 122114 bssbbsbssss
72 BS h 72 122411 bssbbssssbs
73 HT i 73 142112 bssssbbsbss
74 LF j 74 142211 bssssbbssbs
75 VT k 75 241211 bbssssbssbs
76 FF I 76 221114 bbssbsbssss
77 CR m 77 413111 bbbbsbbbsbs
78 SO n 78 241112 bbssssbsbss
79 SI o 79 134111 bsssbbbbsbs
80 DLE p 80 111242 bsbssbbbbss
81 DC1 q 81 121142 bssbsbbbbss
82 DC2 r 82 121241 bssbssbbbbs
83 DC3 s 83 114212 bsbbbbssbss
84 DC4 t 84 124112 bssbbbbsbss
85 NAK u 85 124211 bssbbbbssbs
86 SYN v 86 411212 bbbbsbssbss
87 ETB w 87 421112 bbbbssbsbss
88 CAN x 88 421211 bbbbssbssbs
89 EM y 89 212141 bbsbbsbbbbs
90 SUB z 90 214121 bbsbbbbsbbs
91 ESC { 91 412121 bbbbsbbsbbs
92 FS | 92 111143 bsbsbbbbsss
93 GS } 93 111341 bsbsssbbbbs
94 RS ~ 94 131141 bsssbsbbbbs
95 US DEL 95 114113 bsbbbbsbsss
96 FNC3 FNC3 96 114311 bsbbbbsssbs
97 FNC2 FNC2 97 411113 bbbbsbsbsss
98 SHIFT SHIFT 98 411311 bbbbsbsssbs
99 CODEC CODEC 99 113141 bsbbbsbbbbs
100 CODEB FNC4 CODEB 114131 bsbbbbsbbbs
101 FNC4 CODEA CODEA 311141 bbbsbsbbbbs
102 FNC1 FNC1 FNC1 411131 bbbbsbsbbbs
103 StartA StartA StartA 211412 bbsbssssbss
104 StartB StartB StartB 211214 bbsbssbssss
105 StartC StartC StartC 211232 bbsbssbbbss
106 Stop Stop Stop 2331112 bbsssbbbsbsbb
 

【Code128各編碼方式的編碼範圍ui

一、Code128A:標準數字和字母,控制符,特殊字符;編碼

二、Code128B:標準數字和字母,小寫字母,特殊字符;spa

三、Code128C/EAN128:[00]-[99]的數字對集合,共100個,即只能表示偶數位長度的數字。.net

【Code128編碼規則】:開始位 + [FNC1(爲EAN128碼時加)] + 數據位 + 檢驗位 + 結束位code

【Code128檢驗位計算】:(開始位對應的ID值 + 每位數據在整個數據中的位置×每位數據對應的ID值)% 103orm

 

編碼類型 開始位 FNC1
Code128A StartA 無  
Code128B StartB
Code128C StartC
Ean128 StartC FNC1

【C#代碼】blog

  1 using System;
  2 using System.Data;
  3 using System.Collections.Generic;
  4 using System.Text;
  5 using System.Drawing;
  6 
  7 
  8 namespace XXXX.Common
  9 {
 10     /// <summary>
 11     /// 生成Code128A,Code128B,Code128C,EAN128條碼
 12     /// </summary>
 13     public class BarCode
 14     {
 15         /// <summary>
 16         /// 生成條形碼
 17         /// </summary>
 18         /// <param name="barNumber">條形碼,位數必須爲2的倍數</param>
 19         public void CreateBarCode(string barNumber)
 20         {
 21             if (barNumber.Length % 2 == 1) barNumber = "0" + barNumber;
 22             Code128 code = new Code128();
 23             //code.ValueFont = new Font("Arial", 9); //顯示條碼文字字體
 24             code.Height = 38;
 25             Bitmap image = code.GetCodeImage(barNumber, Common.BarCode.Code128.Encode.Code128C);
 26             image.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
 27         }
 28         public class Code128
 29         {
 30             private DataTable m_Code128 = new DataTable();
 31             private uint m_Height = 40;
 32             ///&nbsp;<summary>
 33             ///&nbsp;高度
 34             ///&nbsp;</summary>
 35             public uint Height { get { return m_Height; } set { m_Height = value; } }
 36             private Font m_ValueFont = null;
 37             ///&nbsp;<summary>
 38             ///&nbsp;是否顯示可見號碼&nbsp;若是爲NULL不顯示號碼
 39             ///&nbsp;</summary>
 40             public Font ValueFont { get { return m_ValueFont; } set { m_ValueFont = value; } }
 41             private byte m_Magnify = 0;
 42             ///&nbsp;<summary>
 43             ///&nbsp;放大倍數
 44             ///&nbsp;</summary>
 45             public byte Magnify { get { return m_Magnify; } set { m_Magnify = value; } }
 46             ///&nbsp;<summary>
 47             ///&nbsp;條碼類別
 48             ///&nbsp;</summary>
 49             public enum Encode
 50             {
 51                 Code128A,
 52                 Code128B,
 53                 Code128C,
 54                 EAN128
 55             }
 56             /// <summary>
 57             /// 數據表
 58             /// </summary>
 59             public Code128()
 60             {
 61                 m_Code128.Columns.Add("ID");
 62                 m_Code128.Columns.Add("Code128A");
 63                 m_Code128.Columns.Add("Code128B");
 64                 m_Code128.Columns.Add("Code128C");
 65                 m_Code128.Columns.Add("BandCode");
 66                 m_Code128.CaseSensitive = true;
 67                 #region&nbsp;數據表
 68                 m_Code128.Rows.Add("0", "&nbsp;", "&nbsp;", "00", "212222");
 69                 m_Code128.Rows.Add("1", "!", "!", "01", "222122");
 70                 m_Code128.Rows.Add("2", "\"", "\"", "02", "222221");
 71                 m_Code128.Rows.Add("3", "#", "#", "03", "121223");
 72                 m_Code128.Rows.Add("4", "$", "$", "04", "121322");
 73                 m_Code128.Rows.Add("5", "%", "%", "05", "131222");
 74                 m_Code128.Rows.Add("6", "&", "&", "06", "122213");
 75                 m_Code128.Rows.Add("7", "'", "'", "07", "122312");
 76                 m_Code128.Rows.Add("8", "(", "(", "08", "132212");
 77                 m_Code128.Rows.Add("9", ")", ")", "09", "221213");
 78                 m_Code128.Rows.Add("10", "*", "*", "10", "221312");
 79                 m_Code128.Rows.Add("11", "+", "+", "11", "231212");
 80                 m_Code128.Rows.Add("12", ",", ",", "12", "112232");
 81                 m_Code128.Rows.Add("13", "-", "-", "13", "122132");
 82                 m_Code128.Rows.Add("14", ".", ".", "14", "122231");
 83                 m_Code128.Rows.Add("15", "/", "/", "15", "113222");
 84                 m_Code128.Rows.Add("16", "0", "0", "16", "123122");
 85                 m_Code128.Rows.Add("17", "1", "1", "17", "123221");
 86                 m_Code128.Rows.Add("18", "2", "2", "18", "223211");
 87                 m_Code128.Rows.Add("19", "3", "3", "19", "221132");
 88                 m_Code128.Rows.Add("20", "4", "4", "20", "221231");
 89                 m_Code128.Rows.Add("21", "5", "5", "21", "213212");
 90                 m_Code128.Rows.Add("22", "6", "6", "22", "223112");
 91                 m_Code128.Rows.Add("23", "7", "7", "23", "312131");
 92                 m_Code128.Rows.Add("24", "8", "8", "24", "311222");
 93                 m_Code128.Rows.Add("25", "9", "9", "25", "321122");
 94                 m_Code128.Rows.Add("26", ":", ":", "26", "321221");
 95                 m_Code128.Rows.Add("27", ";", ";", "27", "312212");
 96                 m_Code128.Rows.Add("28", "<", "<", "28", "322112");
 97                 m_Code128.Rows.Add("29", "=", "=", "29", "322211");
 98                 m_Code128.Rows.Add("30", ">", ">", "30", "212123");
 99                 m_Code128.Rows.Add("31", "?", "?", "31", "212321");
100                 m_Code128.Rows.Add("32", "@", "@", "32", "232121");
101                 m_Code128.Rows.Add("33", "A", "A", "33", "111323");
102                 m_Code128.Rows.Add("34", "B", "B", "34", "131123");
103                 m_Code128.Rows.Add("35", "C", "C", "35", "131321");
104                 m_Code128.Rows.Add("36", "D", "D", "36", "112313");
105                 m_Code128.Rows.Add("37", "E", "E", "37", "132113");
106                 m_Code128.Rows.Add("38", "F", "F", "38", "132311");
107                 m_Code128.Rows.Add("39", "G", "G", "39", "211313");
108                 m_Code128.Rows.Add("40", "H", "H", "40", "231113");
109                 m_Code128.Rows.Add("41", "I", "I", "41", "231311");
110                 m_Code128.Rows.Add("42", "J", "J", "42", "112133");
111                 m_Code128.Rows.Add("43", "K", "K", "43", "112331");
112                 m_Code128.Rows.Add("44", "L", "L", "44", "132131");
113                 m_Code128.Rows.Add("45", "M", "M", "45", "113123");
114                 m_Code128.Rows.Add("46", "N", "N", "46", "113321");
115                 m_Code128.Rows.Add("47", "O", "O", "47", "133121");
116                 m_Code128.Rows.Add("48", "P", "P", "48", "313121");
117                 m_Code128.Rows.Add("49", "Q", "Q", "49", "211331");
118                 m_Code128.Rows.Add("50", "R", "R", "50", "231131");
119                 m_Code128.Rows.Add("51", "S", "S", "51", "213113");
120                 m_Code128.Rows.Add("52", "T", "T", "52", "213311");
121                 m_Code128.Rows.Add("53", "U", "U", "53", "213131");
122                 m_Code128.Rows.Add("54", "V", "V", "54", "311123");
123                 m_Code128.Rows.Add("55", "W", "W", "55", "311321");
124                 m_Code128.Rows.Add("56", "X", "X", "56", "331121");
125                 m_Code128.Rows.Add("57", "Y", "Y", "57", "312113");
126                 m_Code128.Rows.Add("58", "Z", "Z", "58", "312311");
127                 m_Code128.Rows.Add("59", "[", "[", "59", "332111");
128                 m_Code128.Rows.Add("60", "\\", "\\", "60", "314111");
129                 m_Code128.Rows.Add("61", "]", "]", "61", "221411");
130                 m_Code128.Rows.Add("62", "^", "^", "62", "431111");
131                 m_Code128.Rows.Add("63", "_", "_", "63", "111224");
132                 m_Code128.Rows.Add("64", "NUL", "`", "64", "111422");
133                 m_Code128.Rows.Add("65", "SOH", "a", "65", "121124");
134                 m_Code128.Rows.Add("66", "STX", "b", "66", "121421");
135                 m_Code128.Rows.Add("67", "ETX", "c", "67", "141122");
136                 m_Code128.Rows.Add("68", "EOT", "d", "68", "141221");
137                 m_Code128.Rows.Add("69", "ENQ", "e", "69", "112214");
138                 m_Code128.Rows.Add("70", "ACK", "f", "70", "112412");
139                 m_Code128.Rows.Add("71", "BEL", "g", "71", "122114");
140                 m_Code128.Rows.Add("72", "BS", "h", "72", "122411");
141                 m_Code128.Rows.Add("73", "HT", "i", "73", "142112");
142                 m_Code128.Rows.Add("74", "LF", "j", "74", "142211");
143                 m_Code128.Rows.Add("75", "VT", "k", "75", "241211");
144                 m_Code128.Rows.Add("76", "FF", "I", "76", "221114");
145                 m_Code128.Rows.Add("77", "CR", "m", "77", "413111");
146                 m_Code128.Rows.Add("78", "SO", "n", "78", "241112");
147                 m_Code128.Rows.Add("79", "SI", "o", "79", "134111");
148                 m_Code128.Rows.Add("80", "DLE", "p", "80", "111242");
149                 m_Code128.Rows.Add("81", "DC1", "q", "81", "121142");
150                 m_Code128.Rows.Add("82", "DC2", "r", "82", "121241");
151                 m_Code128.Rows.Add("83", "DC3", "s", "83", "114212");
152                 m_Code128.Rows.Add("84", "DC4", "t", "84", "124112");
153                 m_Code128.Rows.Add("85", "NAK", "u", "85", "124211");
154                 m_Code128.Rows.Add("86", "SYN", "v", "86", "411212");
155                 m_Code128.Rows.Add("87", "ETB", "w", "87", "421112");
156                 m_Code128.Rows.Add("88", "CAN", "x", "88", "421211");
157                 m_Code128.Rows.Add("89", "EM", "y", "89", "212141");
158                 m_Code128.Rows.Add("90", "SUB", "z", "90", "214121");
159                 m_Code128.Rows.Add("91", "ESC", "{", "91", "412121");
160                 m_Code128.Rows.Add("92", "FS", "|", "92", "111143");
161                 m_Code128.Rows.Add("93", "GS", "}", "93", "111341");
162                 m_Code128.Rows.Add("94", "RS", "~", "94", "131141");
163                 m_Code128.Rows.Add("95", "US", "DEL", "95", "114113");
164                 m_Code128.Rows.Add("96", "FNC3", "FNC3", "96", "114311");
165                 m_Code128.Rows.Add("97", "FNC2", "FNC2", "97", "411113");
166                 m_Code128.Rows.Add("98", "SHIFT", "SHIFT", "98", "411311");
167                 m_Code128.Rows.Add("99", "CODEC", "CODEC", "99", "113141");
168                 m_Code128.Rows.Add("100", "CODEB", "FNC4", "CODEB", "114131");
169                 m_Code128.Rows.Add("101", "FNC4", "CODEA", "CODEA", "311141");
170                 m_Code128.Rows.Add("102", "FNC1", "FNC1", "FNC1", "411131");
171                 m_Code128.Rows.Add("103", "StartA", "StartA", "StartA", "211412");
172                 m_Code128.Rows.Add("104", "StartB", "StartB", "StartB", "211214");
173                 m_Code128.Rows.Add("105", "StartC", "StartC", "StartC", "211232");
174                 m_Code128.Rows.Add("106", "Stop", "Stop", "Stop", "2331112");
175                 #endregion
176             }
177             ///&nbsp;<summary>
178             ///&nbsp;獲取128圖形
179             ///&nbsp;</summary>
180             ///&nbsp;<param&nbsp;name="p_Text">文字</param>
181             ///&nbsp;<param&nbsp;name="p_Code">編碼</param>
182             ///&nbsp;<returns>圖形</returns>
183             public Bitmap GetCodeImage(string p_Text, Encode p_Code)
184             {
185                 string _ViewText = p_Text;
186                 string _Text = "";
187                 IList<int> _TextNumb = new List<int>();
188                 int _Examine = 0;&nbsp;//首位
189                 switch (p_Code)
190                 {
191                     case Encode.Code128C:
192                         _Examine = 105;
193                         if (!((p_Text.Length & 1) == 0)) throw new Exception("128C長度必須是偶數");
194                         while (p_Text.Length != 0)
195                         {
196                             int _Temp = 0;
197                             try
198                             {
199                                 int _CodeNumb128 = Int32.Parse(p_Text.Substring(0, 2));
200                             }
201                             catch
202                             {
203                                 throw new Exception("128C必須是數字!");
204                             }
205                             _Text += GetValue(p_Code, p_Text.Substring(0, 2), ref&nbsp;_Temp);
206                             _TextNumb.Add(_Temp);
207                             p_Text = p_Text.Remove(0, 2);
208                         }
209                         break;
210                     case Encode.EAN128:
211                         _Examine = 105;
212                         if (!((p_Text.Length & 1) == 0)) throw new Exception("EAN128長度必須是偶數");
213                         _TextNumb.Add(102);
214                         _Text += "411131";
215                         while (p_Text.Length != 0)
216                         {
217                             int _Temp = 0;
218                             try
219                             {
220                                 int _CodeNumb128 = Int32.Parse(p_Text.Substring(0, 2));
221                             }
222                             catch
223                             {
224                                 throw new Exception("128C必須是數字!");
225                             }
226                             _Text += GetValue(Encode.Code128C, p_Text.Substring(0, 2), ref&nbsp;_Temp);
227                             _TextNumb.Add(_Temp);
228                             p_Text = p_Text.Remove(0, 2);
229                         }
230                         break;
231                     default:
232                         if (p_Code == Encode.Code128A)
233                         {
234                             _Examine = 103;
235                         }
236                         else
237                         {
238                             _Examine = 104;
239                         }
240                         while (p_Text.Length != 0)
241                         {
242                             int _Temp = 0;
243                             string _ValueCode = GetValue(p_Code, p_Text.Substring(0, 1), ref&nbsp;_Temp);
244                             if (_ValueCode.Length == 0) throw new Exception("無效的字符集!" + p_Text.Substring(0, 1).ToString());
245                             _Text += _ValueCode;
246                             _TextNumb.Add(_Temp);
247                             p_Text = p_Text.Remove(0, 1);
248                         }
249                         break;
250                 }
251                 if (_TextNumb.Count == 0) throw new Exception("錯誤的編碼,無數據");
252                 _Text = _Text.Insert(0, GetValue(_Examine));&nbsp;//獲取開始位
253                 for (int i = 0; i != _TextNumb.Count; i++)
254                 {
255                     _Examine += _TextNumb[i] * (i + 1);
256                 }
257                 _Examine = _Examine % 103;&nbsp;//得到嚴效位
258                 _Text += GetValue(_Examine);&nbsp;//獲取嚴效位
259                 _Text += "2331112";&nbsp;//結束位
260                 Bitmap _CodeImage = GetImage(_Text);
261                 GetViewText(_CodeImage, _ViewText);
262                 return _CodeImage;
263             }
264 
265             ///&nbsp;<summary>
266             ///&nbsp;獲取目標對應的數據
267             ///&nbsp;</summary>
268             ///&nbsp;<param&nbsp;name="p_Code">編碼</param>
269             ///&nbsp;<param&nbsp;name="p_Value">數值&nbsp;A&nbsp;b&nbsp;30</param>
270             ///&nbsp;<param&nbsp;name="p_SetID">返回編號</param>
271             ///&nbsp;<returns>編碼</returns>
272             private string GetValue(Encode p_Code, string p_Value, ref&nbsp;int p_SetID)
273             {
274                 if (m_Code128 == null) return "";
275                 DataRow[] _Row = m_Code128.Select(p_Code.ToString() + "='" + p_Value + "'");
276                 if (_Row.Length != 1) throw new Exception("錯誤的編碼" + p_Value.ToString());
277                 p_SetID = Int32.Parse(_Row[0]["ID"].ToString());
278                 return _Row[0]["BandCode"].ToString();
279             }
280             ///&nbsp;<summary>
281             ///&nbsp;根據編號得到條紋
282             ///&nbsp;</summary>
283             ///&nbsp;<param&nbsp;name="p_CodeId"></param>
284             ///&nbsp;<returns></returns>
285             private string GetValue(int p_CodeId)
286             {
287                 DataRow[] _Row = m_Code128.Select("ID='" + p_CodeId.ToString() + "'");
288                 if (_Row.Length != 1) throw new Exception("驗效位的編碼錯誤" + p_CodeId.ToString());
289                 return _Row[0]["BandCode"].ToString();
290             }
291             ///&nbsp;<summary>
292             ///&nbsp;得到條碼圖形
293             ///&nbsp;</summary>
294             ///&nbsp;<param&nbsp;name="p_Text">文字</param>
295             ///&nbsp;<returns>圖形</returns>
296             private Bitmap GetImage(string p_Text)
297             {
298                 char[] _Value = p_Text.ToCharArray();
299                 int _Width = 0;
300                 for (int i = 0; i != _Value.Length; i++)
301                 {
302                     _Width += Int32.Parse(_Value[i].ToString()) * (m_Magnify + 1);
303                 }
304                 Bitmap _CodeImage = new Bitmap(_Width, (int)m_Height);
305                 Graphics _Garphics = Graphics.FromImage(_CodeImage);
306                 //Pen&nbsp;_Pen;
307                 int _LenEx = 0;
308                 for (int i = 0; i != _Value.Length; i++)
309                 {
310                     int _ValueNumb = Int32.Parse(_Value[i].ToString()) * (m_Magnify + 1);&nbsp;//獲取寬和放大係數
311                     if (!((i & 1) == 0))
312                     {
313                         //_Pen&nbsp;=&nbsp;new&nbsp;Pen(Brushes.White,&nbsp;_ValueNumb);
314                         _Garphics.FillRectangle(Brushes.White, new Rectangle(_LenEx, 0, _ValueNumb, (int)m_Height));
315                     }
316                     else
317                     {
318                         //_Pen&nbsp;=&nbsp;new&nbsp;Pen(Brushes.Black,&nbsp;_ValueNumb);
319                         _Garphics.FillRectangle(Brushes.Black, new Rectangle(_LenEx, 0, _ValueNumb, (int)m_Height));
320                     }
321                     //_Garphics.(_Pen,&nbsp;new&nbsp;Point(_LenEx,&nbsp;0),&nbsp;new&nbsp;Point(_LenEx,&nbsp;m_Height));
322                     _LenEx += _ValueNumb;
323                 }
324                 _Garphics.Dispose();
325                 return _CodeImage;
326             }
327             ///&nbsp;<summary>
328             ///&nbsp;顯示可見條碼文字&nbsp;若是小於40&nbsp;不顯示文字
329             ///&nbsp;</summary>
330             ///&nbsp;<param&nbsp;name="p_Bitmap">圖形</param>
331             private void GetViewText(Bitmap p_Bitmap, string p_ViewText)
332             {
333                 if (m_ValueFont == null) return;
334                 Graphics _Graphics = Graphics.FromImage(p_Bitmap);
335                 SizeF _DrawSize = _Graphics.MeasureString(p_ViewText, m_ValueFont);
336                 if (_DrawSize.Height > p_Bitmap.Height - 10 || _DrawSize.Width > p_Bitmap.Width)
337                 {
338                     _Graphics.Dispose();
339                     return;
340                 }
341                 int _StarY = p_Bitmap.Height - (int)_DrawSize.Height;
342                 _Graphics.FillRectangle(Brushes.White, new Rectangle(0, _StarY, p_Bitmap.Width, (int)_DrawSize.Height));
343                 _Graphics.DrawString(p_ViewText, m_ValueFont, Brushes.Black, 0, _StarY);
344             }
345         }
346     }
347 }
code128

[代碼轉自]http://blog.csdn.net/anchenyanyue/article/details/7666284

現實中不少現有的代碼庫有code128碼,可是沒有ean128碼,因此根據算法咱們也能夠很容易添加ean128.

一下是在barcodelib添加ean128的代碼,這邊只有code128部分,就看成是擴展吧 【BarcodeLibExtend下載】

相關文章
相關標籤/搜索