`
hulianwang2014
  • 浏览: 695886 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

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. ///zgke@sina.com
  11. ///qq:116149
  12. ///</summary>
  13. public class Code39
  14. {
  15. private Hashtablem_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 Fontm_ViewFont= null ;
  27. ///<summary>
  28. ///字体大小
  29. ///</summary>
  30. public FontViewFont{ 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. ///<paramname="p_Text">文字信息</param>
  93. ///<paramname="p_Model">类别</param>
  94. ///<paramname="p_StarChar">是否增加前后*号</param>
  95. ///<returns>图形</returns>
  96. public BitmapGetCodeImage( string p_Text,Code39Modelp_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. ///<paramname="p_Text">编码</param>
  139. ///<returns>图形</returns>
  140. private BitmapGetImage( 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. ///<paramname="p_CodeImage">图形</param>
  168. ///<paramname="p_Text">文字</param>
  169. private void GetViewImage(Bitmapp_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. }
http://blog.csdn.net/zgke/archive/2008/12/12/3503845.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics