亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

BarCode條形碼基于C# GDI+ 的實現方法詳解

2020-01-24 03:23:36
字體:
來源:轉載
供稿:網友

條形碼在生活中的應用非常廣泛,具體的條形碼知識大家自行百度,了解條形碼知識對理解下面的代碼是必要的。如果只是應用的話,直接拿去就可以用了。
廢話不多說,上代碼

復制代碼 代碼如下:

public Bitmap GetCode39(string sourceCode)
         {
             int leftMargin = 5;
             int topMargin = 0;
             int thickLength = 2;
             int narrowLength = 1;
             int barCodeHeight = 35;
             int intSourceLength = sourceCode.Length;
             string strEncode = "010010100"; //添加起始碼“*”.
             var font = new System.Drawing.Font("Segoe UI", 5);

             string AlphaBet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*";

             string[] Code39 =
             {
                 /* 0 */ "000110100", 
                 /* 1 */ "100100001", 
                 /* 2 */ "001100001", 
                 /* 3 */ "101100000",
                 /* 4 */ "000110001", 
                 /* 5 */ "100110000", 
                 /* 6 */ "001110000", 
                 /* 7 */ "000100101",
                 /* 8 */ "100100100", 
                 /* 9 */ "001100100", 
                 /* A */ "100001001", 
                 /* B */ "001001001",
                 /* C */ "101001000", 
                 /* D */ "000011001", 
                 /* E */ "100011000", 
                 /* F */ "001011000",
                 /* G */ "000001101", 
                 /* H */ "100001100", 
                 /* I */ "001001100", 
                 /* J */ "000011100",
                 /* K */ "100000011", 
                 /* L */ "001000011", 
                 /* M */ "101000010", 
                 /* N */ "000010011",
                 /* O */ "100010010", 
                 /* P */ "001010010", 
                 /* Q */ "000000111", 
                 /* R */ "100000110",
                 /* S */ "001000110", 
                 /* T */ "000010110", 
                 /* U */ "110000001", 
                 /* V */ "011000001",
                 /* W */ "111000000", 
                 /* X */ "010010001", 
                 /* Y */ "110010000", 
                 /* Z */ "011010000",
                 /* - */ "010000101", 
                 /* . */ "110000100", 
                 /*' '*/ "011000100",
                 /* $ */ "010101000",
                 /* / */ "010100010", 
                 /* + */ "010001010", 
                 /* % */ "000101010", 
                 /* * */ "010010100" 
             };
             sourceCode = sourceCode.ToUpper();

             Bitmap objBitmap = new Bitmap(
               ((thickLength * 3 + narrowLength * 7) * (intSourceLength + 2)) + (leftMargin * 2),
               barCodeHeight + (topMargin * 2));
             Graphics objGraphics = Graphics.FromImage(objBitmap);

             objGraphics.FillRectangle(Brushes.White, 0, 0, objBitmap.Width, objBitmap.Height);

             for (int i = 0; i < intSourceLength; i++)
             {
                 //非法字符校驗
                 if (AlphaBet.IndexOf(sourceCode[i]) == -1 || sourceCode[i] == '*')
                 {
                     objGraphics.DrawString("Invalid Bar Code",
                       SystemFonts.DefaultFont, Brushes.Red, leftMargin, topMargin);
                     return objBitmap;
                 }
                 //編碼
                 strEncode = string.Format("{0}0{1}", strEncode,
                  Code39[AlphaBet.IndexOf(sourceCode[i])]);
             }

             strEncode = string.Format("{0}0010010100", strEncode); //添加結束碼“*”

             int intEncodeLength = strEncode.Length;
             int intBarWidth;

             for (int i = 0; i < intEncodeLength; i++) //繪制 Code39 barcode
             {
                 intBarWidth = strEncode[i] == '1' ? thickLength : narrowLength;
                 objGraphics.FillRectangle(i % 2 == 0 ? Brushes.Black : Brushes.White,
                  leftMargin, topMargin, intBarWidth, barCodeHeight);
                 leftMargin += intBarWidth;
             }

             //繪制 明碼
             SizeF sizeF = objGraphics.MeasureString(sourceCode, font);
             float x=(objBitmap.Width - sizeF.Width) / 2;
             float y = objBitmap.Height - sizeF.Height;
             objGraphics.FillRectangle(Brushes.White, x, y, sizeF.Width, sizeF.Height);
             objGraphics.DrawString(sourceCode, font, Brushes.Black, x, y);

             return objBitmap;
         }

新建一個Winform程序拖一個PictureBox控件,然后把方法返回的圖片綁到PictureBox上,就可以看到結果了。

以上代碼需要引用 System.Drawing 命名空間。

順帶提一句,還有一種最簡單的辦法就是下載條形碼字體,然后輸出的時候設定字體為條形碼字體,顯示的就是條形碼了。不過你不能要求每個客戶機都裝這種字體。這個是個明顯的缺陷,所以不推薦使用這種方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品免高潮在线观看| 国产女人18毛片水18精品| 国模精品视频一区二区| 日韩成人av在线播放| 欧美xxxx14xxxxx性爽| 久久久久国产精品www| 色先锋资源久久综合5566| 不卡av电影院| 亚洲缚视频在线观看| 亚洲经典中文字幕| 精品免费在线观看| 精品美女久久久久久免费| 国产一区二区三区免费视频| 亚洲а∨天堂久久精品9966| 久久天天躁狠狠躁夜夜躁| 欧美国产亚洲精品久久久8v| 日韩av在线一区二区| 国产日韩av在线播放| 日韩a**中文字幕| 国产综合久久久久| 久久久久久久久久久久av| 亚洲xxxx在线| 精品久久久久久久中文字幕| 亚洲性生活视频在线观看| 亚洲一级黄色片| 国产亚洲精品久久久久动| 久久久国产视频91| 国产不卡一区二区在线播放| 亚洲第一区在线观看| 亚洲精品在线视频| 91久久国产精品91久久性色| 亚洲自拍偷拍第一页| 欧美亚洲另类在线| 在线观看久久久久久| 麻豆国产va免费精品高清在线| 国产精品视频一| 色噜噜狠狠色综合网图区| 久久久久久久久久久久久久久久久久av| 日韩视频免费大全中文字幕| 亚洲免费视频观看| 亚洲大胆人体av| 日韩av影视在线| 欧美国产精品va在线观看| 日韩中文字幕在线| 久久精品国产清自在天天线| 日本高清+成人网在线观看| 97婷婷大伊香蕉精品视频| 欧美一区二区三区图| 成人在线视频福利| 日韩资源在线观看| 亚洲第一区在线观看| 亚洲另类激情图| 91日本在线视频| 国产日本欧美一区二区三区在线| 中文字幕在线成人| 成人a视频在线观看| 久久久天堂国产精品女人| 日本成人免费在线| 久久91精品国产| 欧美理论在线观看| 欧美国产日韩免费| 日韩av免费在线看| 亚洲精品一区二区在线| 在线激情影院一区| 日韩中文字幕在线| 国产精品99久久99久久久二8| 国产一区二区三区日韩欧美| 国内精久久久久久久久久人| 亚洲欧美自拍一区| 国产网站欧美日韩免费精品在线观看| 亚洲va国产va天堂va久久| 91久久久久久久久| 国产精品18久久久久久首页狼| 国产乱肥老妇国产一区二| 亚洲天堂网在线观看| 日本一区二区三区在线播放| 91精品国产91久久久久久久久| 久久久999国产| 美乳少妇欧美精品| 久久的精品视频| 国产精品久久久久久久久久久不卡| 欧美成人在线免费| 久久久久久国产免费| 亚洲成人免费在线视频| 欧美午夜精品久久久久久人妖| 欧美另类暴力丝袜| 色香阁99久久精品久久久| 日韩欧美国产成人| 日韩av影院在线观看| 狠狠操狠狠色综合网| 久久精品国产2020观看福利| 日韩av在线一区| 亚洲va电影大全| 91日本在线观看| 欧美激情精品久久久久久久变态| 久久人人97超碰精品888| 欧美精品生活片| 欧美孕妇孕交黑巨大网站| 日韩美女视频免费看| 精品小视频在线| 2019最新中文字幕| 中文字幕亚洲在线| 日本中文字幕成人| 国产精选久久久久久| 久久国产色av| 一区二区在线视频| 亚洲最大的免费| 成人激情视频免费在线| 97久久久免费福利网址| 久久精品国产亚洲| 国产视频精品自拍| 亚洲变态欧美另类捆绑| 668精品在线视频| 国产不卡在线观看| 精品在线观看国产| 亚洲裸体xxxx| 亚洲精品xxx| 亚洲国产成人精品久久久国产成人一区| 亚洲综合在线中文字幕| 国产不卡精品视男人的天堂| 青青精品视频播放| 成人免费xxxxx在线观看| 色偷偷88888欧美精品久久久| 日韩欧美成人精品| 亚洲成人激情在线| 日韩风俗一区 二区| 黄色一区二区在线| 国产视频亚洲精品| 色吧影院999| 日韩av在线免费| 久久亚洲精品一区| 欧美电影《睫毛膏》| 亚洲精品www久久久| 亚洲欧美制服另类日韩| 色偷偷噜噜噜亚洲男人的天堂| 亚洲人精选亚洲人成在线| 色狠狠av一区二区三区香蕉蜜桃| 国产日韩精品一区二区| 久久久精品在线观看| 亚洲免费伊人电影在线观看av| 亚洲国产精品va在看黑人| 日韩网站在线观看| 91精品国产乱码久久久久久久久| 国产视频欧美视频| 亚洲国产精品99久久| 日本久久精品视频| 一区二区三区回区在观看免费视频| 亚洲天堂免费视频| 亚洲免费视频观看| 亚洲人成网站免费播放| 久久国产精彩视频| 亚洲黄在线观看| 欧美日本在线视频中文字字幕| 欧美精品videofree1080p| 国产一区二区三区高清在线观看| www.久久久久久.com| 国产欧美精品一区二区三区-老狼| 国产精品人成电影在线观看| 国产亚洲a∨片在线观看| 亚洲欧美日韩一区二区三区在线| 国产精品影院在线观看| 日韩欧美中文字幕在线观看| 日本高清不卡的在线| 国产精品扒开腿做爽爽爽男男|