使用

  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. /// zgke@sina.com
  11. /// qq:116149
  12. /// </summary>
  13. public class Code39
  14. {
  15. private Hashtable m_Code39 = new Hashtable();
  16. private byte m_Magnify = 0;
  17. /// <summary>
  18. /// 放大倍数
  19. /// </summary>
  20. public byte Magnify { get {return m_Magnify; }set{m_Magnify=value;} }
  21. private int m_Height = 40;
  22. /// <summary>
  23. /// 图形高
  24. /// </summary>
  25. public int 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. public enum 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] == '*') throw new Exception("带有起始符号不能出现*");
  126. object _CharCode=m_Code39[_ValueChar[i].ToString()];
  127. if (_CharCode == null) throw new 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. private void GetViewImage(Bitmap p_CodeImage,string p_Text)
  170. {
  171. if (m_ViewFont == null) return;
  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. }

转载于:https://www.cnblogs.com/MaxWoods/archive/2010/11/30/1892440.html

C#绘制条码CODE39和CODE39全码模式相关推荐

  1. 条码生成代码(Code39码)

    zryou 的 条码生成代码(Code39码) 『Code 39条形码介绍』 code39条码能表示字母.数字和其它一些符号共43个字符:A -Z, 0-9, -.$/ + %, space等,其主要 ...

  2. Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)

    Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式.清除原有图像.设置横坐标显示文字/旋转角度.添加图例.绘图布局自动调整.图像显示.图像暂停) 目 ...

  3. HTML5游戏引擎(二)02-egret引擎之hello world——快速上手-清理项目 程序入口 绘制单色背景 调整屏幕的适配模式 添加文字 响应用户操作-让文字变色

    HTML5游戏引擎(二)02-egret引擎之hello world--快速上手-清理项目 & 程序入口 & 绘制单色背景 & 调整屏幕的适配模式 & 添加文字 &am ...

  4. cad墙线打断lisp_CAD绘制墙体时,不打断模式有什么好处?

    在CAD建筑施工图绘制中,有两种不同的墙体绘制模式:不打断和自动打断,而天正建筑给用户提供了自动打断这种墙体绘制模式.那么不打断墙体绘制模式有什么优点呢? 自动打断与不打断两种墙体绘制模式比较: 浩辰 ...

  5. .NET绘制条码Code128A,Code128B,Code128C,EAN128

    发一个CODE128条码绘制类.只支持Code128A,Code128B,Code128C,EAN128. 128C和EAN128是双位的也就是本身码一次取两位.而且必须是数字.EAN128和128C ...

  6. 【Matlab】【碎碎念】绘制热力图,并更改颜色模式、设置X轴,Y轴,以及使用text()函数

    主要实现以下功能: 根据不同的工作簿读取xlsx数据 根据给定矩阵,绘画热力图 更改热力图的颜色模式 按照指定步长设置x轴和y轴的刻度 根据x轴和y轴重命名刻度值 使用text()函数来,给图像指定位 ...

  7. C# asp.net 条形码 code39条码 生成 扫描枪能识别(好东西转载...)

    这几天一直在弄128条码的事情,找了相关的资料,也没找到.后来没办法只能改成code39的条码.现在把它写出来,与大家分享 1.先下载一种免费的 code39条码字体   点击这里也可下载 2.建个类 ...

  8. 三种条码code39和code93以及code128在应用中的比较

    与经常在商品上见到的ENA 13条码不同,code39, code93和 code128常用于企业自定义编码的应用. 从易用性来说,code39显示是最容易的,其编码只需要对原字符串前后加上符号&qu ...

  9. vb.net 生成条码 (code39)

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 欢迎大家捧场:<Visual Basic.Net 循序渐进> 由于.net平台下C# ...

  10. 采用GDI生成Code39条形码

    采用GDI技术生成条形码(Code39) 简介 Ø         Code39介绍 Ø         Code Table Ø         示例 Code39介绍 1.         Cod ...

最新文章

  1. jquery 选择时间(小时)区间(四)
  2. 2020年奇安信校招JAVA岗笔试
  3. different behavior in AG3 and P8I about Territory management - popup window display
  4. mac下安装mongodb
  5. JavaFX UI控件教程(七)之Checkbox
  6. mysql图片_往MySQL中存储图片的方法
  7. 清明节,如何用代码让网页变灰
  8. HIVE编程指南之HiveQL的学习笔记1
  9. 备用计算机机房管理制度,计算机机房管理制度
  10. linux文件系统 ubi,UBI文件系统简介
  11. Unity 实现蓄力攻击
  12. 经典的Embedding方法Word2vec
  13. word文档里四级目录无法显示
  14. 赵明称荣耀2022年全球销量有望翻倍;微软完成197亿美元收购Nuance | 美通社头条...
  15. Robot + Appium 搭建 iOS 自动化测试环境
  16. 流媒体之色彩转换——RGB(X)与YUV之间转换
  17. 机器学习中踩过的坑,如何让你变得更专业?
  18. 小明爬楼梯--python
  19. OpenCV实战5 车牌号识别
  20. Maven工程中Pom.xml文件总是报依赖找不到

热门文章

  1. 遍历对象和数组的forEach函数
  2. eNSP模拟器拓扑图:浮动路由的实际作用和分析,默认路由的配置,抓包分析
  3. 8Manage轻松解决采购过程“脏乱差”问题
  4. Jenkins 持续集成平台构建之通过git提交代码
  5. Delphi单元文件引用名称问题
  6. 6月第二周国内域名解析商Top10:万网份额突破21%
  7. [读书]设计模式:享元模式
  8. USACO_Prime Cryptarithm
  9. Linux文件属性与权限
  10. windows下用notepad++配置go语言开发环境