1. 程式人生 > >C#繪製條碼CODE39和CODE39全碼模式

C#繪製條碼CODE39和CODE39全碼模式

不使用字型來繪製CODE39碼

效果圖

使用

  1.   MyImage.BandCode.Code39 _Code39 = new MyImage.BandCode.Code39();
  2.             _Code39.Height = 120;
  3.             _Code39.Magnify = 1;
  4.             _Code39.ViewFont = new Font("宋體", 20);
  5.             pictureBox1.Image = _Code39.GetCodeImage("123ABC4567890", MyImage.BandCode.Code39.Code39Model.Code39Normal, 
    true);
  6.             pictureBox1.Image.Save(@"C:/1.bmp");

全部程式碼

  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. namespace MyImage.BandCode
  7. {
  8. /// <summary>
  9. /// Code39編碼
  10. /// [email protected]
  11. /// qq:116149
  12. /// </summary>
  13. publicclass
     Code39
  14.     {
  15. private Hashtable m_Code39 = new Hashtable();
  16. privatebyte m_Magnify = 0;
  17. /// <summary>
  18. /// 放大倍數
  19. /// </summary>
  20. publicbyte Magnify { get {return m_Magnify; }set{m_Magnify=value;} }
  21. privateint m_Height = 40;
  22. /// <summary>
  23. /// 圖形高
  24. /// </summary>
  25. publicint Height { get { return m_Height; } 
    set { m_Height = value; } }
  26. private Font m_ViewFont = null;
  27. /// <summary>
  28. /// 字型大小
  29. /// </summary>
  30. public Font ViewFont { get { return m_ViewFont; } set { m_ViewFont = value; } }
  31. public Code39()
  32.         {
  33.             m_Code39.Add("A""1101010010110");
  34.             m_Code39.Add("B""1011010010110");
  35.             m_Code39.Add("C""1101101001010");
  36.             m_Code39.Add("D""1010110010110");
  37.             m_Code39.Add("E""1101011001010");
  38.             m_Code39.Add("F""1011011001010");
  39.             m_Code39.Add("G""1010100110110");
  40.             m_Code39.Add("H""1101010011010");
  41.             m_Code39.Add("I""1011010011010");
  42.             m_Code39.Add("J""1010110011010");
  43.             m_Code39.Add("K""1101010100110");
  44.             m_Code39.Add("L""1011010100110");
  45.             m_Code39.Add("M""1101101010010");
  46.             m_Code39.Add("N""1010110100110");
  47.             m_Code39.Add("O""1101011010010");
  48.             m_Code39.Add("P""1011011010010");
  49.             m_Code39.Add("Q""1010101100110");
  50.             m_Code39.Add("R""1101010110010");
  51.             m_Code39.Add("S""1011010110010");
  52.             m_Code39.Add("T""1010110110010");
  53.             m_Code39.Add("U""1100101010110");
  54.             m_Code39.Add("V""1001101010110");
  55.             m_Code39.Add("W""1100110101010");
  56.             m_Code39.Add("X""1001011010110");
  57.             m_Code39.Add("Y""1100101101010");
  58.             m_Code39.Add("Z""1001101101010");
  59.             m_Code39.Add("0""1010011011010");
  60.             m_Code39.Add("1""1101001010110");
  61.             m_Code39.Add("2""1011001010110");
  62.             m_Code39.Add("3""1101100101010");
  63.             m_Code39.Add("4""1010011010110");
  64.             m_Code39.Add("5""1101001101010");
  65.             m_Code39.Add("6""1011001101010");
  66.             m_Code39.Add("7""1010010110110");
  67.             m_Code39.Add("8""1101001011010");
  68.             m_Code39.Add("9""1011001011010");
  69.             m_Code39.Add("+""1001010010010");
  70.             m_Code39.Add("-""1001010110110");
  71.             m_Code39.Add("*""1001011011010");
  72.             m_Code39.Add("/""1001001010010");
  73.             m_Code39.Add("%""1010010010010");
  74.             m_Code39.Add("$""1001001001010");
  75.             m_Code39.Add(".""1100101011010");
  76.             m_Code39.Add(" ""1001101011010");
  77.         }
  78. publicenum Code39Model
  79.         {
  80. /// <summary>
  81. /// 基本類別 1234567890ABC
  82. /// </summary>
  83.             Code39Normal,
  84. /// <summary>
  85. /// 全ASCII方式 +A+B 來表示小寫
  86. /// </summary>
  87.             Code39FullAscII
  88.         }
  89. /// <summary>
  90. /// 獲得條碼圖形
  91. /// </summary>
  92. /// <param name="p_Text">文字資訊</param>
  93. /// <param name="p_Model">類別</param>
  94. /// <param name="p_StarChar">是否增加前後*號</param>
  95. /// <returns>圖形</returns>
  96. public Bitmap GetCodeImage(string p_Text, Code39Model p_Model, bool p_StarChar)
  97.         {
  98. string _ValueText = "";
  99. string _CodeText = "";
  100. char[] _ValueChar = null;
  101. switch (p_Model)
  102.             {
  103. case Code39Model.Code39Normal:
  104.                     _ValueText = p_Text.ToUpper();
  105. break;
  106. default:
  107.                     _ValueChar=p_Text.ToCharArray();
  108. for (int i = 0; i != _ValueChar.Length; i++)
  109.                     {
  110. if ((int)_ValueChar[i] >= 97 && (int)_ValueChar[i] <= 122)
  111.                         {
  112.                             _ValueText +="+"+ _ValueChar[i].ToString().ToUpper();
  113.                         }
  114. else
  115.                         {
  116.                             _ValueText += _ValueChar[i].ToString();
  117.                         }
  118.                     }
  119. break;
  120.             }
  121.             _ValueChar = _ValueText.ToCharArray();
  122. if (p_StarChar == true) _CodeText += m_Code39["*"];
  123. for (int i = 0; i != _ValueChar.Length; i++)
  124.             {
  125. if (p_StarChar==true && _ValueChar[i] == '*'thrownew Exception("帶有起始符號不能出現*");
  126. object _CharCode=m_Code39[_ValueChar[i].ToString()];
  127. if (_CharCode == nullthrownew Exception("不可用的字元" + _ValueChar[i].ToString());
  128.                 _CodeText += _CharCode.ToString();
  129.             }
  130. if (p_StarChar == true) _CodeText += m_Code39["*"];
  131.             Bitmap _CodeBmp = GetImage(_CodeText);
  132.             GetViewImage(_CodeBmp, p_Text);
  133. return _CodeBmp;
  134.         }
  135. /// <summary>
  136. /// 繪製編碼圖形
  137. /// </summary>
  138. /// <param name="p_Text">編碼</param>
  139. /// <returns>圖形</returns>
  140. private Bitmap GetImage(string p_Text)
  141.         {
  142. char[] _Value = p_Text.ToCharArray();
  143. //寬 == 需要繪製的數量*放大倍數 + 兩個字的寬   
  144.             Bitmap _CodeImage = new Bitmap(_Value.Length * ((int)m_Magnify + 1) , (int)m_Height);
  145.             Graphics _Garphics = Graphics.FromImage(_CodeImage);
  146.             _Garphics.FillRectangle(Brushes.White, new Rectangle(0, 0, _CodeImage.Width, _CodeImage.Height));
  147. int _LenEx = 0;
  148. for (int i = 0; i != _Value.Length; i++)
  149.             {
  150. int _DrawWidth = m_Magnify + 1;
  151. if (_Value[i] == '1')
  152.                 {
  153.                     _Garphics.FillRectangle(Brushes.Black, new Rectangle(_LenEx, 0, _DrawWidth, m_Height));
  154.                 }
  155. else
  156.                 {
  157.                     _Garphics.FillRectangle(Brushes.White, new Rectangle(_LenEx, 0, _DrawWidth, m_Height));
  158.                 }
  159.                 _LenEx += _DrawWidth;
  160.             }
  161.             _Garphics.Dispose();
  162. return _CodeImage;
  163.         }
  164. /// <summary>
  165. /// 繪製文字
  166. /// </summary>
  167. /// <param name="p_CodeImage">圖形</param>
  168. /// <param name="p_Text">文字</param>
  169. privatevoid GetViewImage(Bitmap p_CodeImage,string p_Text)
  170.         {
  171. if (m_ViewFont == nullreturn;
  172.             Graphics _Graphics = Graphics.FromImage(p_CodeImage);
  173.             SizeF _FontSize = _Graphics.MeasureString(p_Text, m_ViewFont);
  174. if (_FontSize.Width > p_CodeImage.Width || _FontSize.Height > p_CodeImage.Height - 20)
  175.             {
  176.                 _Graphics.Dispose();
  177. return;
  178.             }
  179. int _StarHeight = p_CodeImage.Height - (int)_FontSize.Height;
  180.             _Graphics.FillRectangle(Brushes.White, new Rectangle(0, _StarHeight, p_CodeImage.Width,(int)_FontSize.Height));
  181. int _StarWidth = (p_CodeImage.Width - (int)_FontSize.Width) / 2;
  182.             _Graphics.DrawString(p_Text, m_ViewFont, Brushes.Black, _StarWidth, _StarHeight);
  183.             _Graphics.Dispose();
  184.         }
  185.     }
  186. }

相關推薦

C#繪製條碼CODE39CODE39模式

不使用字型來繪製CODE39碼 效果圖 使用   MyImage.BandCode.Code39 _Code39 = new MyImage.BandCode.Code39();             _Code39.Height = 120;           

三種條碼code39code93以及code128在應用中的比較

  與經常在商品上見到的ENA 13條碼不同,code39, code93和 code128常用於企業自定義編碼的應用。   從易用性來說,code39顯示是最容易的,其編碼只需要對原字串前後加上符號“*”即可。code93作為code39的改進,複雜程居中,到目前還沒在實際

支付寶支付開發——當面付條碼支付支付

找到 生成二維碼 uil ebr eqv 超過 id號 xe8 trigger 本文介紹支付寶中當面付下屬的條碼支付、掃碼支付、訂單查詢、退款申請的集成開發過程。 本文分為以下五個部分: 條碼支付和掃碼支付介紹 申請應用 密鑰生成及配置 API及SDK集成 條碼支付、

C++構造函數編譯器自動生成代的陷阱

log bug () 很好 style 自動 pub 為我 ret 最近在項目中debug各種access violation的,其中這個問題比較有代表性,並且能夠被規範的代碼標準解決。 問題可以總結為以下的代碼: 1 class TestString 2 { 3

C#中的overridnew修飾符區別(代)

之間 using stat ide post 不同的 虛擬 spa 代碼 在C#的繼承中嘗嘗會用到相關的修飾詞:override和new。這兩個修飾符都可以在新的子類中,重寫同名的父類方法。 override: 擴展或修改繼承的方法、屬性、索引器或事件的抽象或虛擬

C# 返回圖片驗證返回驗證中的字串

直接把這個類複製出去就能使用 using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; namespace 生成驗證碼 {  

C#呼叫TSC條碼印表機列印二維(轉)

#region 呼叫TSC印表機列印 /// <summary> /// 呼叫TSC印表機列印 /// </summary> /// <param name="title">列印的標題</param

OpenCv-C++下的輪廓周圍繪製矩形框圓形框

目前我正在學習OpenCv下的輪廓周圍繪製矩形框和圓形框,將個人學習記錄放到這裡。 參考連結:https://blog.csdn.net/lanyuelvyun/article/details/76614872 https://blog.csdn.net/qq_31647835/arti

C#同步網絡時間本地時間的代

lac linq generic ray [1] 常用 seq update etime 做工程過程,將做工程過程經常用的內容做個收藏,下面內容內容是關於 C#同步網絡時間和本地時間的內容,希望對各位朋友有較大用途。 using System; using System.

OpenCv-C++-下的輪廓周圍繪製矩形框圓形框

目前我正在學習OpenCv下的輪廓周圍繪製矩形框和圓形框,將個人學習記錄放到這裡。 下面介紹幾個相關函式: findContours():不用說了,找到影象的輪廓點 approxPolyDP():減少輪廓點集裡的個數 boundingRect():得到包覆此輪

c語言 ascii 壓縮bcd 之間的相互轉換

轉載請標註出處:(版權所有)本文將從五點詳細介紹bcd碼和ascii 之間的關係,如下所示:一、簡介二、用途三、特點四、程式碼原理五、程式碼       1、ascii 轉壓縮bcd碼   2、 壓縮bcd 轉ascii 碼六、總結語正文一、簡介   (1) bcd 碼(僅0

C# 在PDF中繪製上標下標文字

這篇文章將介紹如何使用C#在PDF文件中繪製上標和下標文字。 所需PDF元件: Free Spire.PDF for .NET 4.3 Free Spire.PDF dll 可通過官網下載或直接通過NuGet Package Manager搜尋Free Spire.PDF安裝。

基於Metronic的Bootstrap開發框架經驗總結(14)--條碼二維的生成及列印處理

在很多專案裡面,對條形碼和二維碼的生成和列印也是一種很常見的操作,在Web專案裡面,我們可以利用JS生成條形碼和二維碼的元件有很多。本文引入兩個比較廣泛使用的JS元件,用來處理條形碼和二維碼的生成處理,並介紹如何利用CLODOP元件實現內容的列印輸出。生成條形碼使用元件JsBarcode,生成二維碼使用元件q

C#華氏溫度攝氏溫度的相互專函源片段

相互 stat emp system 資料 pub per ren str 把寫代碼過程經常用到的一些代碼做個記錄,如下資料是關於C#華氏溫度和攝氏溫度的相互專函片段的代碼。 public static double CelsiusToFahrenheit (str

C#呼叫Windows API其它程序通訊及C# 獲得另外一程式 控制代 後控制該程式 控制其透明 窗體大小

作者:邊城浪子◎2005-01-16 關鍵字:  C#,API,FindWindow,FindWindowEx,SendMessage,程序,登錄檔 設計初衷:公司為了便於網路管理,使用了IEEE 802.1X的網路訪問控制,這樣每次開機需要輸入兩次登入密碼,於是我就研究了

繪製有填充無填充顏色的長方形圓形(C#)

長方形和正方形是一樣的,都是用畫長方形函式來畫,圓形和橢圓是一樣的,都是用畫橢圓函式來畫,下面就以具體的程式為例來進行了解: //正方形 protected override void OnPaint(PaintEventArgse)        {          

3.2.2Python之ReportLab繪製條形碼二維

條形碼和二維碼 #引入所需要的基本包 from reportlab.pdfgen import canvas from reportlab.graphics.barcode import code39, code128, code93 from repor

Java呼叫TSC條碼印表機介面列印條碼二維

公司新買了一臺TSC條碼印表機,型號:TSC TTP-244 PRO,讓和現有資產管理系統對接,可以根據系統上的編碼直接列印。 研究了幾天,終於調試出來了,下邊是程式碼,,目測可用: java後臺除錯程式碼(連線好印表機後可直接列印,用於直接除錯): import

CODE39CODE128編碼生成函式(VBA版)

Public Function StrToCode39(str As String) As String     StrToCode39 = "*" & str & "*"     End Function Function StrToCode128(s

c# datagridview裡面的checkbox取消選 按鈕

首先 using System; 然後,設定全選button,選中所有的checkbox private void selectAll_Click(object sender, EventArgs e) { //遍歷dat