.NET繪製條碼Code128A,Code128B,Code128C,EAN128
發一個CODE128條碼繪製類。只支援Code128A,Code128B,Code128C,EAN128。
128C和EAN128是雙位的也就是本身碼一次取兩位。而且必須是數字。EAN128和128C不同在與 EAN128前比128C多了一個EAN位(102),多的這一位是參與驗效的。
如 2008 128C驗效 (105 + (1 * 20+ 2 * 8 )) % 103
EAN驗效 (105+(1*102+2*20+3*8))%103 這裡的102是EAN的頭位。
屬性
Height 繪製圖形的高度
ValueFont 是否顯示可見號碼 如果為NULL不顯示號碼。如果字型繪製如果大於條碼所用的大小,即使設定了FONT也不會顯示。
Magnify 放大倍數
使用
- BandCode.Code128 _Code = new BandCode.Code128();
- _Code.ValueFont = new Font("宋體", 10);
- pictureBox1.Image=_Code.GetCodeImage("20081011001010020001", BandCode.Code128.Encode.Code128C);
- pictureBox1.Image.Save(@"C:/B.BMP");
完整的類
- using System;
- using System.Data;
- using
- using System.Text;
- using System.Drawing;
- namespace CopyDirectoryInfo
- {
- /// <summary>
- /// Code128A,Code128B,Code128C,EAN128條碼
- /// [email protected]
- /// qq:116149
- /// </summary>
- publicclass BandCode
- {
- publicclass Code128
- {
- private DataTable m_Code128 =new
- privateuint m_Height = 40;
- /// <summary>
- /// 高度
- /// </summary>
- publicuint Height { get { return m_Height; } set { m_Height = value; } }
- private Font m_ValueFont = null;
- /// <summary>
- /// 是否顯示可見號碼 如果為NULL不顯示號碼
- /// </summary>
- public Font ValueFont { get { return m_ValueFont; } set { m_ValueFont = value; } }
- privatebyte m_Magnify = 0;
- /// <summary>
- /// 放大倍數
- /// </summary>
- publicbyte Magnify { get { return m_Magnify; } set { m_Magnify = value; } }
- /// <summary>
- /// 條碼類別
- /// </summary>
- publicenum Encode
- {
- Code128A,
- Code128B,
- Code128C,
- EAN128
- }
- public Code128()
- {
- m_Code128.Columns.Add("ID");
- m_Code128.Columns.Add("Code128A");
- m_Code128.Columns.Add("Code128B");
- m_Code128.Columns.Add("Code128C");
- m_Code128.Columns.Add("BandCode");
- m_Code128.CaseSensitive = true;
- #region 資料表
- m_Code128.Rows.Add("0", " ", " ", "00", "212222");
- m_Code128.Rows.Add("1", "!", "!", "01", "222122");
- m_Code128.Rows.Add("2", "/"", "/"", "02", "222221");
- m_Code128.Rows.Add("3", "#", "#", "03", "121223");
- m_Code128.Rows.Add("4", "$", "$", "04", "121322");
- m_Code128.Rows.Add("5", "%", "%", "05", "131222");
- m_Code128.Rows.Add("6", "&", "&", "06", "122213");
- m_Code128.Rows.Add("7", "'", "'", "07", "122312");
- m_Code128.Rows.Add("8", "(", "(", "08", "132212");
- m_Code128.Rows.Add("9", ")", ")", "09", "221213");
- m_Code128.Rows.Add("10", "*", "*", "10", "221312");
- m_Code128.Rows.Add("11", "+", "+", "11", "231212");
- m_Code128.Rows.Add("12", ",", ",", "12", "112232");
- m_Code128.Rows.Add("13", "-", "-", "13", "122132");
- m_Code128.Rows.Add("14", ".", ".", "14", "122231");
- m_Code128.Rows.Add("15", "/", "/", "15", "113222");
- m_Code128.Rows.Add("16", "0", "0", "16", "123122");
- m_Code128.Rows.Add("17", "1", "1", "17", "123221");
- m_Code128.Rows.Add("18", "2", "2", "18", "223211");
- m_Code128.Rows.Add("19", "3", "3", "19", "221132");
- m_Code128.Rows.Add("20", "4", "4", "20", "221231");
- m_Code128.Rows.Add("21", "5", "5", "21", "213212");
- m_Code128.Rows.Add("22", "6", "6", "22", "223112");
- m_Code128.Rows.Add("23", "7", "7", "23", "312131");
- m_Code128.Rows.Add("24", "8", "8", "24", "311222");
- m_Code128.Rows.Add("25", "9", "9", "25", "321122");
- m_Code128.Rows.Add("26", ":", ":", "26", "321221");
- m_Code128.Rows.Add("27", ";", ";", "27", "312212");
- m_Code128.Rows.Add("28", "<", "<", "28", "322112");
- m_Code128.Rows.Add("29", "=", "=", "29", "322211");
- m_Code128.Rows.Add("30", ">", ">", "30", "212123");
- m_Code128.Rows.Add("31", "?", "?", "31", "212321");
- m_Code128.Rows.Add("32", "@", "@", "32", "232121");
- m_Code128.Rows.Add("33", "A", "A", "33", "111323");
- m_Code128.Rows.Add("34", "B", "B", "34", "131123");
- m_Code128.Rows.Add("35", "C", "C", "35", "131321");
- m_Code128.Rows.Add("36", "D", "D", "36", "112313");
- m_Code128.Rows.Add("37", "E", "E", "37", "132113");
- m_Code128.Rows.Add("38", "F", "F", "38", "132311");
- m_Code128.Rows.Add("39", "G", "G", "39", "211313");
- m_Code128.Rows.Add("40", "H", "H", "40", "231113");
- m_Code128.Rows.Add("41", "I", "I", "41", "231311");
- m_Code128.Rows.Add("42", "J", "J", "42", "112133");
- m_Code128.Rows.Add("43", "K", "K", "43", "112331");
- m_Code128.Rows.Add("44", "L", "L", "44", "132131");
- m_Code128.Rows.Add("45", "M", "M", "45", "113123");
- m_Code128.Rows.Add("46", "N", "N", "46", "113321");
- m_Code128.Rows.Add("47", "O", "O", "47", "133121");
- m_Code128.Rows.Add("48", "P", "P", "48", "313121");
- m_Code128.Rows.Add("49", "Q", "Q", "49", "211331");
- m_Code128.Rows.Add("50", "R", "R", "50", "231131");
- m_Code128.Rows.Add("51", "S", "S", "51", "213113");
- m_Code128.Rows.Add("52", "T", "T", "52", "213311");
- m_Code128.Rows.Add("53", "U", "U", "53", "213131");
- m_Code128.Rows.Add("54", "V", "V", "54", "311123");
- m_Code128.Rows.Add("55", "W", "W", "55", "311321");
- m_Code128.Rows.Add("56", "X", "X", "56", "331121");
- m_Code128.Rows.Add("57", "Y", "Y", "57", "312113");
- m_Code128.Rows.Add("58", "Z", "Z", "58", "312311");
- m_Code128.Rows.Add("59", "[", "[", "59", "332111");
- m_Code128.Rows.Add("60", "//", "//", "60", "314111");
- m_Code128.Rows.Add("61", "]", "]", "61", "221411");
- m_Code128.Rows.Add("62", "^", "^", "62", "431111");
- m_Code128.Rows.Add("63", "_", "_", "63", "111224");
- m_Code128.Rows.Add("64", "NUL", "`", "64", "111422");
- m_Code128.Rows.Add("65", "SOH", "a", "65", "121124");
- m_Code128.Rows.Add("66", "STX", "b", "66", "121421");
- m_Code128.Rows.Add("67", "ETX", "c", "67", "141122");
- m_Code128.Rows.Add("68", "EOT", "d", "68", "141221");
- m_Code128.Rows.Add("69", "ENQ", "e", "69", "112214");
- m_Code128.Rows.Add("70", "ACK", "f", "70", "112412");
- m_Code128.Rows.Add("71", "BEL", "g", "71", "122114");
- m_Code128.Rows.Add("72", "BS", "h", "72", "122411");
- m_Code128.Rows.Add("73", "HT", "i", "73", "142112");
- m_Code128.Rows.Add("74", "LF", "j", "74", "142211");
- m_Code128.Rows.Add("75", "VT", "k", "75", "241211");
- m_Code128.Rows.Add("76", "FF", "I", "76", "221114");
- m_Code128.Rows.Add("77", "CR", "m", "77", "413111");
- m_Code128.Rows.Add("78", "SO", "n", "78", "241112");
- m_Code128.Rows.Add("79", "SI", "o", "79", "134111");
- m_Code128.Rows.Add("80", "DLE", "p", "80", "111242");
- m_Code128.Rows.Add("81", "DC1", "q", "81", "121142");
- m_Code128.Rows.Add("82", "DC2", "r", "82", "121241");
- m_Code128.Rows.Add("83", "DC3", "s", "83", "114212");
- m_Code128.Rows.Add("84", "DC4", "t", "84", "124112");
- m_Code128.Rows.Add("85", "NAK", "u", "85", "124211");
- m_Code128.Rows.Add("86", "SYN", "v", "86", "411212");
- m_Code128.Rows.Add("87", "ETB", "w", "87", "421112");
- m_Code128.Rows.Add("88", "CAN", "x", "88", "421211");
- m_Code128.Rows.Add("89", "EM", "y", "89", "212141");
- m_Code128.Rows.Add("90", "SUB", "z", "90", "214121");
- m_Code128.Rows.Add("91", "ESC", "{", "91", "412121");
- m_Code128.Rows.Add("92", "FS", "|", "92", "111143");
- m_Code128.Rows.Add("93", "GS", "}", "93", "111341");
- m_Code128.Rows.Add("94", "RS", "~", "94", "131141");
- m_Code128.Rows.Add("95", "US", "DEL", "95", "114113");
- m_Code128.Rows.Add("96", "FNC3", "FNC3", "96", "114311");
- m_Code128.Rows.Add("97", "FNC2", "FNC2", "97", "411113");
- m_Code128.Rows.Add("98", "SHIFT", "SHIFT", "98", "411311");
- m_Code128.Rows.Add("99", "CODEC", "CODEC", "99", "113141");
- m_Code128.Rows.Add("100", "CODEB", "FNC4", "CODEB", "114131");
- m_Code128.Rows.Add("101", "FNC4", "CODEA", "CODEA", "311141");
- m_Code128.Rows.Add("102", "FNC1", "FNC1", "FNC1", "411131");
- m_Code128.Rows.Add("103", "StartA", "StartA", "StartA", "211412");
- m_Code128.Rows.Add("104", "StartB", "StartB", "StartB", "211214");
- m_Code128.Rows.Add("105", "StartC", "StartC", "StartC", "211232");
- m_Code128.Rows.Add("106", "Stop", "Stop", "Stop", "2331112");
- #endregion
- }
- /// <summary>
- /// 獲取128圖形
- /// </summary>
- /// <param name="p_Text">文字</param>
- /// <param name="p_Code">編碼</param>
- /// <returns>圖形</returns>
- public Bitmap GetCodeImage(string p_Text,Encode p_Code)
- {
- string _ViewText = p_Text;
- string _Text = "";
- IList<int> _TextNumb=new List<int>();
- int _Examine = 0; //首位
- switch (p_Code)
- {
- case Encode.Code128C:
- _Examine = 105;
- if (!((p_Text.Length & 1) == 0)) thrownew Exception("128C長度必須是偶數");
- while (p_Text.Length != 0)
- { int _Temp = 0;
- try
- {
- int _CodeNumb128 = Int32.Parse(p_Text.Substring(0, 2));
- }
- catch
- {
- thrownew Exception("128C必須是數字!");
- }
- _Text += GetValue(p_Code, p_Text.Substring(0, 2), ref _Temp);
- _TextNumb.Add(_Temp);
- p_Text = p_Text.Remove(0, 2);
- }
- break;
- case Encode.EAN128:
- _Examine = 105;
- if (!((p_Text.Length & 1) == 0)) thrownew Exception("EAN128長度必須是偶數");
- _TextNumb.Add(102);
- _Text += "411131";
- while (p_Text.Length != 0)
- {
- int _Temp = 0;
- try
- {
- int _CodeNumb128 = Int32.Parse(p_Text.Substring(0, 2));
- }
- catch
- {
- thrownew Exception("128C必須是數字!");
- }
- _Text += GetValue(Encode.Code128C, p_Text.Substring(0, 2), ref _Temp);
- _TextNumb.Add(_Temp);
- p_Text = p_Text.Remove(0, 2);
- }
- break;
- default:
- if (p_Code == Encode.Code128A)
- {
- _Examine = 103;
- }
- else
- {
- _Examine = 104;
- }
- while (p_Text.Length!=0)
- {
- int _Temp=0;
- string _ValueCode = GetValue(p_Code, p_Text.Substring(0, 1), ref _Temp);
- if (_ValueCode.Length == 0) thrownew Exception("無效的字符集!" + p_Text.Substring(0, 1).ToString());
- _Text += _ValueCode;
- _TextNumb.Add(_Temp);
- p_Text = p_Text.Remove(0, 1);
- }
- break;
- }
- if (_TextNumb.Count == 0) thrownew Exception("錯誤的編碼,無資料");
- _Text= _Text.Insert(0, GetValue(_Examine)); //獲取開始位
- for (int i = 0; i != _TextNumb.Count; i++)
- {
- _Examine += _TextNumb[i] * (i + 1);
- }
- _Examine = _Examine % 103; //獲得嚴效位
- _Text+= GetValue(_Examine); //獲取嚴效位
- _Text += "2331112"; //結束位
- Bitmap _CodeImage = GetImage(_Text);
- GetViewText(_CodeImage, _ViewText);
- return _CodeImage;
- }
- /// <summary>
- /// 獲取目標對應的資料
- /// </summary>
- /// <param name="p_Code">編碼</param>
- /// <param name="p_Value">數值 A b 30</param>
- /// <param name="p_SetID">返回編號</param>
- /// <returns>編碼</returns>
- privatestring GetValue(Encode p_Code, string p_Value,refint p_SetID)
- {
- if (m_Code128 == null) return"";
- DataRow[] _Row = m_Code128.Select(p_Code.ToString()+"='" + p_Value + "'");
- if (_Row.Length != 1) thrownew Exception("錯誤的編碼" + p_Value.ToString());
- p_SetID = Int32.Parse(_Row[0]["ID"].ToString());
- return _Row[0]["BandCode"].ToString();
- }
- /// <summary>
- /// 根據編號獲得條紋
- /// </summary>
- /// <param name="p_CodeId"></param>
- /// <returns></returns>
- privatestring GetValue(int p_CodeId)
- {
- DataRow[] _Row = m_Code128.Select("ID='" + p_CodeId.ToString() + "'");
- if (_Row.Length != 1) thrownew Exception("驗效位的編碼錯誤" + p_CodeId.ToString());
- return _Row[0]["BandCode"].ToString();
- }
- /// <summary>
- /// 獲得條碼圖形
- /// </summary>
- /// <param name="p_Text">文字</param>
- /// <returns>圖形</returns>
- private Bitmap GetImage(string p_Text)
- {
- char[] _Value = p_Text.ToCharArray();
- int _Width=0;
- for (int i = 0; i != _Value.Length; i++)
- {
- _Width += Int32.Parse(_Value[i].ToString()) * (m_Magnify + 1);
- }
- Bitmap _CodeImage = new Bitmap(_Width,(int) m_Height);
- Graphics _Garphics= Graphics.FromImage(_CodeImage);
- //Pen _Pen;
- int _LenEx = 0;
- for (int i = 0; i != _Value.Length; i++)
- {
- int _ValueNumb = Int32.Parse(_Value[i].ToString()) * (m_Magnify + 1); //獲取寬和放大係數
- if (!((i & 1) == 0))
- {
- //_Pen = new Pen(Brushes.White, _ValueNumb);
- _Garphics.FillRectangle(Brushes.White, new Rectangle(_LenEx, 0, _ValueNumb,(int) m_Height));
- }
- else
- {
- //_Pen = new Pen(Brushes.Black, _ValueNumb);
- _Garphics.FillRectangle(Brushes.Black, new Rectangle(_LenEx, 0, _ValueNumb,(int) m_Height));
- }
- //_Garphics.(_Pen, new Point(_LenEx, 0), new Point(_LenEx, m_Height));
- _LenEx += _ValueNumb;
- }
- _Garphics.Dispose();
- return _CodeImage;
- }
- /// <summary>
- /// 顯示可見條碼文字 如果小於40 不顯示文字
- /// </summary>
- /// <param name="p_Bitmap">圖形</param>
- privatevoid GetViewText(Bitmap p_Bitmap,string p_ViewText)
- {
- if (m_ValueFont == null) return;
- Graphics _Graphics = Graphics.FromImage(p_Bitmap);
- SizeF _DrawSize =_Graphics.MeasureString(p_ViewText,m_ValueFont);
- if (_DrawSize.Height > p_Bitmap.Height-10 || _DrawSize.Width > p_Bitmap.Width)
- {
- _Graphics.Dispose();
- return;
- }
- int _StarY= p_Bitmap.Height-(int)_DrawSize.Height;
- _Graphics.FillRectangle(Brushes.White, new Rectangle(0, _StarY, p_Bitmap.Width, (int)_DrawSize.Height));
- _Graphics.DrawString(p_ViewText, m_ValueFont, Brushes.Black, 0, _StarY);
- }
- //12345678
- //(105 + (1 * 12 + 2 * 34 + 3 * 56 + 4 *78)) % 103 = 47
- //結果為starc +12 +34 +56 +78 +47 +end
- }
- }
- }
相關推薦
.NET繪製條碼Code128A,Code128B,Code128C,EAN128
發一個CODE128條碼繪製類。只支援Code128A,Code128B,Code128C,EAN128。 128C和EAN128是雙位的也就是本身碼一次取兩位。而且必須是數字。EAN128和128C不同在與 EAN128前比128C多了一個EAN位(102),多的這一位是參
C#繪製條碼CODE39和CODE39全碼模式
不使用字型來繪製CODE39碼 效果圖 使用 MyImage.BandCode.Code39 _Code39 = new MyImage.BandCode.Code39(); _Code39.Height = 120;
.NET繪製旋轉太極圖
.NET繪製旋轉太極圖 我之前發了一篇《用.NET寫“算命”程式》的文章,但有人紛紛提出了質疑,認為沒有“科學”(mi xin)依據
WPF使用 Gmap.NET 繪製極座標運動軌跡
大家好,已經很久沒有更新了,今天寫一篇關於WPF 使用 Gmap.NET 相關的,網上很多Winform的很**,所以我給Wpf進行一些補充。雖然它已經很久沒有更新了,但是也只能用這個了。沒別的好選擇的,畢竟它也沒啥可更新的,也可以理解。 使用它之前請Nuget安裝一下GMap.NET.Core、GM
ThermalLabel SDK 8.0 【標籤條碼】 for .NET
Thermal Label Printing for .NET Apps Use your VB.NET & C# skills for printing barcode labels to Zebra ZPL & EPL compatible printers without ef
c#通過.net自帶的chart控制元件繪製餅圖pie chart
原文地址:http://www.veryhuo.com/a/view/52954.html 需要實現的目標是: 1.將資料繫結到pie的後臺資料中,自動生成餅圖。 2.生成的餅圖有詳細文字的說明。 具體的實現步驟: >>前臺介面的設
Barcode Professional for ASP.NET使用教程:如何在HTML支援的DPI範圍內顯示高清條碼
我們知道高質量的條碼更能達到我們的目的,然而影象DPI與影象的大小成正比,即DPI越高,圖片檔案越大。 可能你將600DPI的圖片顯示在HTML上很容易,然而你會發現圖片佔滿了整個頁面,因為大多數的HTML顯示解析度為96DPI。那麼今天將分享用Barcode Profe
C# WinForm開發系列之c# 通過.net自帶的chart控制元件繪製餅圖,柱形圖和折線圖的基礎使用和擴充套件
一.需要實現的目標是: 1.將資料繫結到pie的後臺資料中,自動生成餅圖。 2.生成的餅圖有詳細文字的說明。 1.設定chart1的屬性Legends中預設的Legend1的Enable為false; 如圖1所示: 圖1 2.設定Series的ChartT
利用OFFICE 2003 OWC 繪圖控制元件在.NET平臺下實現資料圖表的繪製
來源:蘭州大學網路教育學院 宋昀傑 馬青 劉江 摘要:OWC,即Office Web Components,是微軟隨Office提供的繪圖控制元件,設計的目的是為眾多的控制元件容器提供互動的電子表格建模,資料報表和資料視覺化功能。OWC庫包含四個主要的元件:電子表格元件
code128b條碼生成程式
FUNCTIONget_char(char_codeINPLS_INTEGER)RETURNVARCHAR2IS LANGUAGEJAVANAME'xxfnd.XxfndBarcodeUtil
C#專案之 GMap.net 標記點及 繪製多點之間的距離
花了兩天的時間,粗略的學習了一下GMap,把學習的地方寫下來,不足之處,望大家多多指正! GMap是codeplex上的一個很好的開源專案,可用於winform WPF和windows mobile。GMap官網 主要支援對地圖(eg.google bing yahoo等等
.NET下的圖形繪製控制元件
圖形圖表的視覺化資料表現形式已成為一種趨勢。因為圖表能直觀的展示資訊、對比和趨勢等,所以許多專案開發中都需要用到圖表控制元件,而很多圖表控制元件都是在.NET平臺下開發的,下面是做得比較好的10款圖形圖表控制元件,提供了一些簡單的介紹,有興趣者可以查閱詳細的資料。
.NET手擼繪製TypeScript類圖——上篇
.NET手擼繪製TypeScript類圖——上篇 近年來隨著互動介面的精細化,TypeScript越來越流行,前端的設計也越來複雜,而類圖正是用簡單的箭頭和方塊,反映物件與物件之間關係/依賴的好方式。許多工具都能生成C#類圖,有些工具也能生成TypeScript類圖,如tsuml,但存在一些侷限性。 我們都是
.NET手擼繪製TypeScript類圖——下篇
.NET手擼繪製TypeScript類圖——下篇 在上篇的文章中,我們介紹瞭如何使用.NET解析TypeScript,這篇將介紹如何使用程式碼將類圖渲染出來。 注:以防有人錯過了,上篇連結如下:https://www.cnblogs.com/sdflysha/p/20191113-ts-uml-with-do
C#/VB.NET 在Word中新增條碼、二維碼
本文介紹如何通過C# 和VB.NET程式碼實現在Word文件中新增條碼和二維碼。程式碼中將分為在Word正文段落中、頁首頁尾中等情況來新增。 使用工具:Free Spire.Office for .NET (免費版) 工具簡介:這是Spire所有.NET平臺下免費產品的集合包,包含Spire.Barcode.
ASP.NET MVC5 中百度ueditor富文本編輯器的使用
編譯時間 文本編輯器 ida height git aid asp ueditor jquery 隨著網站信息發布內容越來越多,越來越重視美觀,富文本編輯就是不可缺少的了,眾多編輯器比較後我選了百度的ueditor富文本編輯器。 百度ueditor富文本編輯器分為兩種一種
.Net Mvc框架知識點
分部視圖 oba net title info bin 共享 顯式 control https://www.h .Net Mvc框架知識點 一、實現Controller的依賴註入: 1.自定義繼承DefaultControllerFactory 類的控制器工
關於.net程序集引用不匹配的問題
public same org 百度 con 提示 加載 detail form 今天啟動asp.net mvc 程序,其中也用到了web api ,autofac等,為了版本兼容性問題,將mvc和 web api 的版本控制到5.2.0.0,Newtonsoft.Json
IOC Of Ninject Base On ASP.NET MVC
dex 準備工作 應用 new 引用 cti err art part 說在之前的話 IOC的概念相信大家比較熟悉了,習慣性稱之為依賴註入或控制反轉,園子裏對基於MVC平臺IOC設計模式已經相當多了,但大家都只知道應該怎麽應用一個IOC模式,比如Ninject, Unity
小結:VB.NET機房收費系統個人版
style 曾經 static 設計 由於 什麽 圖書館 block 技術 經過幾天的縫縫補補,自己的個人版最終OK了,!或許是由於有第一次的機房收費系統的經驗,這次做,感覺很親切。 在業務邏輯方面,沿襲曾經的邏輯。做了一點升級。可是修改不大。