CAD工具之家's Archivers

From boitboy on 2014-11-24 14:45:36

C#生成条形码

using System; using System.Collections.Generic; using System.Text; using System.Drawing; namespace BarCodeCreate { public class GBarcodeMgr { //起始位 enum Code128StartModes { CodeUnset = 0, CodeA = 103, CodeB = 104, CodeC = 105 }; private const string mCode128Stop = "1100011101011"; /// <summary> /// 条码编码规则 /// </summary> List<string> mCode128Encoding = new List<string>(); private void InitEncoding() { mCode128Encoding.Add("11011001100"); mCode128Encoding.Add("11001101100"); mCode128Encoding.Add("11001100110"); mCode128Encoding.Add("10010011000"); mCode128Encoding.Add("10010001100"); mCode128Encoding.Add("10001001100"); mCode128Encoding.Add("10011001000"); mCode128Encoding.Add("10011000100"); mCode128Encoding.Add("10001100100"); mCode128Encoding.Add("11001001000"); mCode128Encoding.Add("11001000100"); mCode128Encoding.Add("11000100100"); mCode128Encoding.Add("10110011100"); mCode128Encoding.Add("10011011100"); mCode128Encoding.Add("10011001110"); mCode128Encoding.Add("10111001100"); mCode128Encoding.Add("10011101100"); mCode128Encoding.Add("10011100110"); mCode128Encoding.Add("11001110010"); mCode128Encoding.Add("11001011100"); mCode128Encoding.Add("11001001110"); mCode128Encoding.Add("11011100100"); mCode128Encoding.Add("11001110100"); mCode128Encoding.Add("11101101110"); mCode128Encoding.Add("11101001100"); mCode128Encoding.Add("11100101100"); mCode128Encoding.Add("11100100110"); mCode128Encoding.Add("11101100100"); mCode128Encoding.Add("11100110100"); mCode128Encoding.Add("11100110010"); mCode128Encoding.Add("11011011000"); mCode128Encoding.Add("11011000110"); mCode128Encoding.Add("11000110110"); mCode128Encoding.Add("10100011000"); mCode128Encoding.Add("10001011000"); mCode128Encoding.Add("10001000110"); mCode128Encoding.Add("10110001000"); mCode128Encoding.Add("10001101000"); mCode128Encoding.Add("10001100010"); mCode128Encoding.Add("11010001000"); mCode128Encoding.Add("11000101000"); mCode128Encoding.Add("11000100010"); mCode128Encoding.Add("10110111000"); mCode128Encoding.Add("10110001110"); mCode128Encoding.Add("10001101110"); mCode128Encoding.Add("10111011000"); mCode128Encoding.Add("10111000110"); mCode128Encoding.Add("10001110110"); mCode128Encoding.Add("11101110110"); mCode128Encoding.Add("11010001110"); mCode128Encoding.Add("11000101110"); mCode128Encoding.Add("11011101000"); mCode128Encoding.Add("11011100010"); mCode128Encoding.Add("11011101110"); mCode128Encoding.Add("11101011000"); mCode128Encoding.Add("11101000110"); mCode128Encoding.Add("11100010110"); mCode128Encoding.Add("11101101000"); mCode128Encoding.Add("11101100010"); mCode128Encoding.Add("11100011010"); mCode128Encoding.Add("11101111010"); mCode128Encoding.Add("11001000010"); mCode128Encoding.Add("11110001010"); mCode128Encoding.Add("10100110000"); mCode128Encoding.Add("10100001100"); mCode128Encoding.Add("10010110000"); mCode128Encoding.Add("10010000110"); mCode128Encoding.Add("10000101100"); mCode128Encoding.Add("10000100110"); mCode128Encoding.Add("10110010000"); mCode128Encoding.Add("10110000100"); mCode128Encoding.Add("10011010000"); mCode128Encoding.Add("10011000010"); mCode128Encoding.Add("10000110100"); mCode128Encoding.Add("10000110010"); mCode128Encoding.Add("11000010010"); mCode128Encoding.Add("11001010000"); mCode128Encoding.Add("1110111010"); mCode128Encoding.Add("1000010100"); mCode128Encoding.Add("0001111010"); mCode128Encoding.Add("10100111100"); mCode128Encoding.Add("10010111100"); mCode128Encoding.Add("10010011110"); mCode128Encoding.Add("10111100100"); mCode128Encoding.Add("10011110100"); mCode128Encoding.Add("10011110010"); mCode128Encoding.Add("11110100100"); mCode128Encoding.Add("11110010100"); mCode128Encoding.Add("11110010010"); mCode128Encoding.Add("11011011110"); mCode128Encoding.Add("11011110110"); mCode128Encoding.Add("11110110110"); mCode128Encoding.Add("10101111000"); mCode128Encoding.Add("10100011110"); mCode128Encoding.Add("10001011110"); mCode128Encoding.Add("10111101000"); mCode128Encoding.Add("10111100010"); mCode128Encoding.Add("11110101000"); mCode128Encoding.Add("11110100010"); mCode128Encoding.Add("10111011110"); mCode128Encoding.Add("10111101110"); mCode128Encoding.Add("11101011110"); mCode128Encoding.Add("11110101110"); mCode128Encoding.Add("11010000100"); mCode128Encoding.Add("11010010000"); mCode128Encoding.Add("11010011100"); } public GBarcodeMgr() { InitEncoding(); } private string _OriginCode = ""; /// <summary> /// 条码原始内容 /// </summary> public string OriginCode { get { return _OriginCode; } set { _OriginCode = value; } } public Bitmap Create(int nHeight) { string encode = GetBarcodeContents(); int len = encode.Length; int nWidth = len; Bitmap b = new Bitmap((int)(1*nWidth+2), nHeight); Graphics g = Graphics.FromImage(b); g.FillRectangle(new SolidBrush(Color.White), new Rectangle(0,0,b.Width-1,b.Height-1));   Pen p = new Pen(Color.Black,1F); int nBarcodeHeight = (int)(nHeight * 0.71); int nTextHeight = nHeight - nBarcodeHeight; Brush brush=new SolidBrush(Color.Black); for (int i = 0; i < len; i++) { if (encode[i] == '1') { g.FillRectangle(brush, new RectangleF((float)(1*i + 1), 0F, 1F, (float)(nBarcodeHeight - 1))); } } string code = Encoding.ASCII.GetString(Encoding.Convert(Encoding.Default, Encoding.ASCII, Encoding.Default.GetBytes(_OriginCode))); len = code.Length; Font f=new Font("微软雅黑",(float)(nTextHeight*0.45));   for (int i = 0; i < len; i++) { char c = code[i]; string s=""; s+=c; RectangleF rf=new RectangleF((float)(i*nWidth/len),(float)(nBarcodeHeight-1+1),(float)(nWidth/len),(float)(nTextHeight*0.9)); g.DrawString(s, f, brush, rf); } return b; } //条码编码后的内容 string GetBarcodeContents() { //转换成ASCII string code = Encoding.ASCII.GetString(Encoding.Convert(Encoding.Default, Encoding.ASCII, Encoding.Default.GetBytes(_OriginCode))); List<int> codeDigit = new List<int>(); codeDigit.Add((int)Code128StartModes.CodeB); int checkDigit = (int)Code128StartModes.CodeB; int len = code.Length; for (int i = 0; i < len; i++) { int tmp = (int)code[i]; int digit = tmp - 32; codeDigit.Add(digit); checkDigit += digit * (i + 1); } codeDigit.Add(checkDigit % 103);   string code128 = ""; len = codeDigit.Count; for (int i = 0; i < len; i++) { int index = codeDigit[i]; code128 += mCode128Encoding[index]; }   code128 += mCode128Stop; return code128; } } }     //调用代码 GBarcodeMgr mgr = new GBarcodeMgr(); mgr.OriginCode = textBox1.Text; Bitmap b=mgr.Create(60); b.Save(@"D:\Barcode.bmp",ImageFormat.Bmp); //效果  

查看完整版本: C#生成条形码

Tags: 条形码


©CAD工具之家
创办于:2013年5月24日