【问题标题】:How to auto-adjust the image height and length based on needs如何根据需要自动调整图像高度和长度
【发布时间】: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时在函数中提供所需的图像尺寸?
  • 这就是我最终要做的——计算每个字符串中最长的字符数并将其乘以字体大小;高度也一样

标签: c# winforms image bitmap


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多