C#繪製條碼CODE39和CODE39全碼模式
不使用字型來繪製CODE39碼
效果圖
使用
- MyImage.BandCode.Code39 _Code39 = new MyImage.BandCode.Code39();
- _Code39.Height = 120;
- _Code39.Magnify = 1;
- _Code39.ViewFont = new Font("宋體", 20);
- pictureBox1.Image = _Code39.GetCodeImage("123ABC4567890", MyImage.BandCode.Code39.Code39Model.Code39Normal,
- pictureBox1.Image.Save(@"C:/1.bmp");
全部程式碼
- using System;
- using System.Collections;
- using System.ComponentModel;
- using System.Drawing;
- using System.Data;
- namespace MyImage.BandCode
- {
- /// <summary>
- /// Code39編碼
- /// [email protected]
- /// qq:116149
- /// </summary>
- publicclass
- {
- private Hashtable m_Code39 = new Hashtable();
- privatebyte m_Magnify = 0;
- /// <summary>
- /// 放大倍數
- /// </summary>
- publicbyte Magnify { get {return m_Magnify; }set{m_Magnify=value;} }
- privateint m_Height = 40;
- /// <summary>
- /// 圖形高
- /// </summary>
- publicint Height { get { return m_Height; }
- private Font m_ViewFont = null;
- /// <summary>
- /// 字型大小
- /// </summary>
- public Font ViewFont { get { return m_ViewFont; } set { m_ViewFont = value; } }
- public Code39()
- {
- m_Code39.Add("A", "1101010010110");
- m_Code39.Add("B", "1011010010110");
- m_Code39.Add("C", "1101101001010");
- m_Code39.Add("D", "1010110010110");
- m_Code39.Add("E", "1101011001010");
- m_Code39.Add("F", "1011011001010");
- m_Code39.Add("G", "1010100110110");
- m_Code39.Add("H", "1101010011010");
- m_Code39.Add("I", "1011010011010");
- m_Code39.Add("J", "1010110011010");
- m_Code39.Add("K", "1101010100110");
- m_Code39.Add("L", "1011010100110");
- m_Code39.Add("M", "1101101010010");
- m_Code39.Add("N", "1010110100110");
- m_Code39.Add("O", "1101011010010");
- m_Code39.Add("P", "1011011010010");
- m_Code39.Add("Q", "1010101100110");
- m_Code39.Add("R", "1101010110010");
- m_Code39.Add("S", "1011010110010");
- m_Code39.Add("T", "1010110110010");
- m_Code39.Add("U", "1100101010110");
- m_Code39.Add("V", "1001101010110");
- m_Code39.Add("W", "1100110101010");
- m_Code39.Add("X", "1001011010110");
- m_Code39.Add("Y", "1100101101010");
- m_Code39.Add("Z", "1001101101010");
- m_Code39.Add("0", "1010011011010");
- m_Code39.Add("1", "1101001010110");
- m_Code39.Add("2", "1011001010110");
- m_Code39.Add("3", "1101100101010");
- m_Code39.Add("4", "1010011010110");
- m_Code39.Add("5", "1101001101010");
- m_Code39.Add("6", "1011001101010");
- m_Code39.Add("7", "1010010110110");
- m_Code39.Add("8", "1101001011010");
- m_Code39.Add("9", "1011001011010");
- m_Code39.Add("+", "1001010010010");
- m_Code39.Add("-", "1001010110110");
- m_Code39.Add("*", "1001011011010");
- m_Code39.Add("/", "1001001010010");
- m_Code39.Add("%", "1010010010010");
- m_Code39.Add("$", "1001001001010");
- m_Code39.Add(".", "1100101011010");
- m_Code39.Add(" ", "1001101011010");
- }
- publicenum Code39Model
- {
- /// <summary>
- /// 基本類別 1234567890ABC
- /// </summary>
- Code39Normal,
- /// <summary>
- /// 全ASCII方式 +A+B 來表示小寫
- /// </summary>
- Code39FullAscII
- }
- /// <summary>
- /// 獲得條碼圖形
- /// </summary>
- /// <param name="p_Text">文字資訊</param>
- /// <param name="p_Model">類別</param>
- /// <param name="p_StarChar">是否增加前後*號</param>
- /// <returns>圖形</returns>
- public Bitmap GetCodeImage(string p_Text, Code39Model p_Model, bool p_StarChar)
- {
- string _ValueText = "";
- string _CodeText = "";
- char[] _ValueChar = null;
- switch (p_Model)
- {
- case Code39Model.Code39Normal:
- _ValueText = p_Text.ToUpper();
- break;
- default:
- _ValueChar=p_Text.ToCharArray();
- for (int i = 0; i != _ValueChar.Length; i++)
- {
- if ((int)_ValueChar[i] >= 97 && (int)_ValueChar[i] <= 122)
- {
- _ValueText +="+"+ _ValueChar[i].ToString().ToUpper();
- }
- else
- {
- _ValueText += _ValueChar[i].ToString();
- }
- }
- break;
- }
- _ValueChar = _ValueText.ToCharArray();
- if (p_StarChar == true) _CodeText += m_Code39["*"];
- for (int i = 0; i != _ValueChar.Length; i++)
- {
- if (p_StarChar==true && _ValueChar[i] == '*') thrownew Exception("帶有起始符號不能出現*");
- object _CharCode=m_Code39[_ValueChar[i].ToString()];
- if (_CharCode == null) thrownew Exception("不可用的字元" + _ValueChar[i].ToString());
- _CodeText += _CharCode.ToString();
- }
- if (p_StarChar == true) _CodeText += m_Code39["*"];
- Bitmap _CodeBmp = GetImage(_CodeText);
- GetViewImage(_CodeBmp, p_Text);
- return _CodeBmp;
- }
- /// <summary>
- /// 繪製編碼圖形
- /// </summary>
- /// <param name="p_Text">編碼</param>
- /// <returns>圖形</returns>
- private Bitmap GetImage(string p_Text)
- {
- char[] _Value = p_Text.ToCharArray();
- //寬 == 需要繪製的數量*放大倍數 + 兩個字的寬
- Bitmap _CodeImage = new Bitmap(_Value.Length * ((int)m_Magnify + 1) , (int)m_Height);
- Graphics _Garphics = Graphics.FromImage(_CodeImage);
- _Garphics.FillRectangle(Brushes.White, new Rectangle(0, 0, _CodeImage.Width, _CodeImage.Height));
- int _LenEx = 0;
- for (int i = 0; i != _Value.Length; i++)
- {
- int _DrawWidth = m_Magnify + 1;
- if (_Value[i] == '1')
- {
- _Garphics.FillRectangle(Brushes.Black, new Rectangle(_LenEx, 0, _DrawWidth, m_Height));
- }
- else
- {
- _Garphics.FillRectangle(Brushes.White, new Rectangle(_LenEx, 0, _DrawWidth, m_Height));
- }
- _LenEx += _DrawWidth;
- }
- _Garphics.Dispose();
- return _CodeImage;
- }
- /// <summary>
- /// 繪製文字
- /// </summary>
- /// <param name="p_CodeImage">圖形</param>
- /// <param name="p_Text">文字</param>
- privatevoid GetViewImage(Bitmap p_CodeImage,string p_Text)
- {
- if (m_ViewFont == null) return;
- Graphics _Graphics = Graphics.FromImage(p_CodeImage);
- SizeF _FontSize = _Graphics.MeasureString(p_Text, m_ViewFont);
- if (_FontSize.Width > p_CodeImage.Width || _FontSize.Height > p_CodeImage.Height - 20)
- {
- _Graphics.Dispose();
- return;
- }
- int _StarHeight = p_CodeImage.Height - (int)_FontSize.Height;
- _Graphics.FillRectangle(Brushes.White, new Rectangle(0, _StarHeight, p_CodeImage.Width,(int)_FontSize.Height));
- int _StarWidth = (p_CodeImage.Width - (int)_FontSize.Width) / 2;
- _Graphics.DrawString(p_Text, m_ViewFont, Brushes.Black, _StarWidth, _StarHeight);
- _Graphics.Dispose();
- }
- }
- }
相關推薦
C#繪製條碼CODE39和CODE39全碼模式
不使用字型來繪製CODE39碼 效果圖 使用 MyImage.BandCode.Code39 _Code39 = new MyImage.BandCode.Code39(); _Code39.Height = 120;
三種條碼code39和code93以及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#中的overrid和new修飾符區別(代碼)
之間 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
CODE39和CODE128編碼生成函式(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