C#生成Code39条形码而非条形码字体的方法

2019-12-26 13:16:00王振洲
  • {  MakeBar(g, rect, reduction,this._codeBarColor); 
  • }  /// <summary> 
  • /// 进行图形填充  /// </summary> 
  • /// <param name="g"></param>  /// <param name="rect"></param> 
  • /// <param name="reduction"></param>  /// <param name="brushColor"></param> 
  • private void MakeBar(Graphics g, RectangleF rect, float reduction, Color brushColor)  { 
  • float num = rect.Width * (reduction / 200f);  float num2 = rect.Width - (rect.Width * (reduction / 200f)); 
  • RectangleF ef = new RectangleF  { 
  • X = rect.X + num,  Y = rect.Y, 
  • Width = num2,  Height = rect.Height 
  • };  SolidBrush brush = new SolidBrush(brushColor); 
  • g.FillRectangle(brush, ef);  } 
  • private char[] getPattern_c39(byte[] data)  { //0x2a 42为* 
  • //int num = 0x27;  int num = 80; 
  • byte[] buffer = new byte[num + 1];  buffer[0] = 0x2a; 
  • int index = 1;  for (int i = 0; i < data.Length; i++) 
  • {  buffer[index] = data[i]; 
  • index++;  } 
  • if (Checksum)  { 
  • buffer[index] = this._checksum_c39(buffer, index);  if (_isDisplayCheckCode) 
  • {  this._checkData = ((char)buffer[index]).ToString(); 
  • }  index++; 
  • }  buffer[index] = 0x2a; 
  • index++;  char[] chArray = new char[index * 10]; 
  • int num5 = 0;  for (int j = 0; j < index; j++) 
  • {  byte c = buffer[j]; 
  • int num9 = this.indexFromCharacter(c);  for (int k = 0; k < 9; k++) 
  • {  chArray[num5] = (char)this.c39_bp[num9, k + 1];