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 に答える