【发布时间】:2012-09-21 10:18:57
【问题描述】:
我有一段代码可以生成条形码图像(使用Free 3 of 9 字体);不过,图片大小是提前定义的,我想知道如何将其调整为所需的大小?
private static Bitmap CreateBarcode(string code)
{
var myBitmap = new Bitmap(500, 50);
//var myBitmap = new Bitmap();
var g = Graphics.FromImage(myBitmap);
var jgpEncoder = GetEncoder(ImageFormat.Jpeg);
g.Clear(Color.White);
var strFormat = new StringFormat { Alignment = StringAlignment.Center };
g.DrawString(code, new Font("Free 3 of 9", 50), Brushes.Black, new RectangleF(0, 0, 500, 50), strFormat);
var myEncoder = System.Drawing.Imaging.Encoder.Quality;
var myEncoderParameters = new EncoderParameters(1);
var myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
return myBitmap;
}
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
var codecs = ImageCodecInfo.GetImageDecoders();
foreach (var codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
【问题讨论】:
-
为什么不在生成BarCOde时在函数中提供所需的图像尺寸?
-
这就是我最终要做的——计算每个字符串中最长的字符数并将其乘以字体大小;高度也一样