我有一段生成条形码图像的代码(使用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;
}
答案 0 :(得分:1)
我认为您正在寻找Graphics.MeasureString
方法。这将测量您正在绘制的字符串的结果图像表示的大小,允许您计算位图的大小。如果它不合适,请在绘制之前增大位图,或者如果它太小则裁剪它。 MSDN for Measure String