纯C# 产生Code39 BarCode 图片

using System.Drawing;

using  System.Drawing.Imaging;


private  Bitmap GetCode39( string  strSource)

... {

  
int x = 5//左邊界

  
int y = 0//上邊界

  
int WidLength = 2//粗BarCode長度

  
int NarrowLength = 1//細BarCode長度

  
int BarCodeHeight = 24//BarCode高度

  
int intSourceLength = strSource.Length;

  
string strEncode = "010010100"//編碼字串 初值為 起始符號 *

 

  
string AlphaBet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*"//Code39的字母

 

  
string[] Code39 = //Code39的各字母對應碼

  
...{

       
/**//* 0 */ "000110100"

       
/**//* 1 */ "100100001"

       
/**//* 2 */ "001100001"

       
/**//* 3 */ "101100000",

       
/**//* 4 */ "000110001"

       
/**//* 5 */ "100110000"

       
/**//* 6 */ "001110000"

       
/**//* 7 */ "000100101",

       
/**//* 8 */ "100100100"

       
/**//* 9 */ "001100100"

       
/**//* A */ "100001001"

       
/**//* B */ "001001001",

       
/**//* C */ "101001000"

       
/**//* D */ "000011001"

       
/**//* E */ "100011000"

       
/**//* F */ "001011000",

       
/**//* G */ "000001101"

       
/**//* H */ "100001100"

       
/**//* I */ "001001100"

       
/**//* J */ "000011100",

       
/**//* K */ "100000011"

       
/**//* L */ "001000011"

       
/**//* M */ "101000010"

       
/**//* N */ "000010011",

       
/**//* O */ "100010010"

       
/**//* P */ "001010010"

       
/**//* Q */ "000000111"

       
/**//* R */ "100000110",

       
/**//* S */ "001000110"

       
/**//* T */ "000010110"

       
/**//* U */ "110000001"

       
/**//* V */ "011000001",

       
/**//* W */ "111000000"

       
/**//* X */ "010010001"

       
/**//* Y */ "110010000"

       
/**//* Z */ "011010000",

       
/**//* - */ "010000101"

       
/**//* . */ "110000100"

       
/**//*' '*/ "011000100",

       
/**//* $ */ "010101000",

       
/**//* / */ "010100010"

       
/**//* + */ "010001010"

       
/**//* % */ "000101010"

       
/**//* * */ "010010100" 

  }
;

 

 

  strSource 
= strSource.ToUpper();

 

  
//實作圖片

  Bitmap objBitmap 
= new Bitmap(

    ((WidLength 
* 3 + NarrowLength * 7* (intSourceLength + 2)) + (x * 2), 

    BarCodeHeight 
+ (y * 2));

 

  Graphics objGraphics 
= Graphics.FromImage(objBitmap); //宣告GDI+繪圖介面

 

  
//填上底色

  objGraphics.FillRectangle(Brushes.White, 
00, objBitmap.Width, objBitmap.Height);

 

  
for (int i = 0; i < intSourceLength; i++

  
...{

    
if (AlphaBet.IndexOf(strSource[i]) == -1 || strSource[i] == '*'//檢查是否有非法字元

    
...{

      objGraphics.DrawString(
"含有非法字元", SystemFonts.DefaultFont, Brushes.Red, x, y);

      
return objBitmap;

    }


    
//查表編碼

    strEncode 
= string.Format("{0}0{1}", strEncode, Code39[AlphaBet.IndexOf(strSource[i])]);

  }


 

  strEncode 
= string.Format("{0}0010010100", strEncode); //補上結束符號 *

 

  
int intEncodeLength = strEncode.Length; //編碼後長度

  
int intBarWidth;

 

  
for (int i = 0; i < intEncodeLength; i++//依碼畫出Code39 BarCode

  
...{

    intBarWidth 
= strEncode[i] == '1' ? WidLength : NarrowLength;

    objGraphics.FillRectangle(i 
% 2 == 0 ? Brushes.Black : Brushes.White,

      x, y, intBarWidth , BarCodeHeight);

    x 
+= intBarWidth;

  }


  
return objBitmap; 

}
 

 C# 代码实现Code39条码图片

占华

http://www.cardprinterworld.com

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值