1

我有一段代码可以生成条形码图像(使用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;
}
4

1 回答 1

1

我想你正在寻找Graphics.MeasureString方法。这将测量您正在绘制的字符串的结果图像表示的大小,允许您计算位图的大小。如果它不适合,请在绘制之前放大位图,或者如果它太小,请裁剪它。MSDN 为Measure String

于 2012-09-30T04:39:26.427 回答