Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find string's width in C# (in pixels)

Tags:

c#

winforms

I'm trying to achieve framed texts (using Windows Forms), e.g.:

enter image description here

Height is always the same, because my strings are less than 20 chars. What about width? Is there any way to get it automatically?

like image 854
Patryk Avatar asked Dec 17 '12 12:12

Patryk


2 Answers

If you don't feel like dealing with the Paint eventhandler, you could try the TextRenderer class. It has a static method that is identical to the "MeasureString" method in the above answer. In this class it is called MeasureText however.

like image 124
Yun Avatar answered Oct 08 '22 08:10

Yun


Use Graphics.MeasureString()

From MSDN: http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx

private void MeasureStringMin(PaintEventArgs e)
{
    // Set up string. 
    string measureString = "Measure String";
    Font stringFont = new Font("Arial", 16);

    // Measure string.
    SizeF stringSize = new SizeF();
    stringSize = e.Graphics.MeasureString(measureString, stringFont);

    // Draw rectangle representing size of string.
    e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0.0F, 0.0F, stringSize.Width, stringSize.Height);

    // Draw string to screen.
    e.Graphics.DrawString(measureString, stringFont, Brushes.Black, new PointF(0, 0));
}
like image 15
Dave Bish Avatar answered Oct 08 '22 08:10

Dave Bish