【親測可行,圖片寬度高度自適應】c# Graphics MeasureString精確測量字體寬度


 public static Bitmap GetImage(string number, float fontSize, int color_red = 40, int color_green = 124, int color_blue = 254)
        {
            int count = number.Length;

            //需要配置的字段
            //Font f = new Font("Microsoft Sans Serif", fontSize);//, System.Drawing.FontStyle.Bold);//設置字體樣式,大小
            Font f = new Font("思源宋體", fontSize);//, System.Drawing.FontStyle.Bold);//設置字體樣式,大小
            #region 測量字體寬度
            Bitmap image_size = new Bitmap(20 * count, f.Height);//初始化大小
            Graphics size_g = Graphics.FromImage(image_size);

            SizeF sizeF = size_g.MeasureString(number, f);
            #endregion

            Bitmap image = new Bitmap((int)sizeF.Width, (int)sizeF.Height);//初始化大小

            Random random = new Random();
            try
            {
                Graphics g = Graphics.FromImage(image);
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//設置圖片質量
                g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;//.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
                g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

                Brush b = new SolidBrush(Color.FromArgb(color_red, color_green, color_blue));
                RectangleF rectangleF = new RectangleF(0, 0, sizeF.Width, sizeF.Height);
                //設置位置
                g.DrawString(number, f, b, rectangleF);

                return image;
            }
            finally { }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM