做报表时需要显示条码,但手头的VS2013连NUGET连不上,下不了Zebra Crossing库,其实系统里本身就自带很多条码字体,可以利用这些字体生成条码图片,保存到数据库,报表直接从数据库提取图片,这样客户端打印没有对应字体也没关系。
private void btnCreateBarCode_Click(object sender, EventArgs e)
{
picBarCode.Image=createBarCodeImg("1234567890123456", 200, 50, 2, 2);
}
private Image createBarCodeImg(string barCode,int imgWidth,int imgHeight,int barcodeLeft,int barcodeTop)
{
//条码图片太大也没意义,保存在数据库还浪费空间
if ((imgWidth <= 0 || imgWidth > 400) || (imgHeight <= 0 || imgHeight > 400))
{
return null;
}
Bitmap b = new Bitmap(imgWidth, imgHeight);
using (Graphics g = Graphics.FromImage(b))
{
g.Clear(Color.White);
Font bfont = new Font("Code39AzaleaRegular2", 24);//设定条码字体和大小,Code39AzaleaRegular1、2、3,常规39带条码,也可以看下系统目录的font文件夹下有哪些其他的条码字体,或者网上下载,生成图片保存后客户端电脑上没有对应字体文件也没关系
g.DrawString(barCode, bfont, Brushes.Black, barcodeLeft, barcodeTop);
//可以自由定义在条码上下生成自己的文字内容
Font sfont = new Font("仿宋", 9);
g.DrawString(barCode, sfont, Brushes.Black, barcodeLeft, barcodeTop + 24+9+1);
}
return b;
}