Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Write Text on Image ( Specified width )

current example

I am generating ICards for employees. I have to write address of the employee on the ICard.

            Image blankICard = Image.FromFile(@"C:\Users\admin\Pictures\filename.jpg");

            Bitmap outputImage = new Bitmap(blankICard.Width, blankICard.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            System.Drawing.SolidBrush b = new SolidBrush(Color.FromArgb(255, 88, 89, 91));
            using (Graphics graphics = Graphics.FromImage(outputImage))
            {
                graphics.DrawImage(blankICard, new Rectangle(0, 0, blankICard.Width, blankICard.Height),
                new Rectangle(new Point(), blankICard.Size), GraphicsUnit.Pixel);

                Font stringFont = new Font("FreightSans Medium", 20, FontStyle.Regular);

                string address = "Address goes here";

                graphics.DrawString(address, new Font("FreightSans Medium", 20, FontStyle.Regular), b, new Point(621, 234));
                graphics.DrawString("Employee Code:12345678", new Font("FreightSans Medium", 26, FontStyle.Regular), b, new Point(350, 407));
            }

Current Output is shown in the left side of the image. Here what happens that my string goes out of the box.

I want to bind it in the fix size box.

Example is shown in the right side of the Image.

like image 227
Kishan Gajjar Avatar asked Jul 05 '26 13:07

Kishan Gajjar


1 Answers

Use Graphics.DrawString overload that takes Rectangle instead of a point. That way you'll wrap text to fit within specified width.

using (Graphics graphics = Graphics.FromImage(outputImage)){
  // Draw whatever you need first
  // ....
  // Create font...
  graphics.DrawString(employeeCode, font, Brushes.Black,
                       new Rectangle(0, 25, maxWidth, maxHeight);
}

Simple as that :)

like image 52
SiliconMind Avatar answered Jul 07 '26 02:07

SiliconMind



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!