GetTextExtentPoint32 (gdi32)
Last changed: -212.152.161.92

.
Summary

C# Signature:

[DllImport("gdi32.dll")]
static extern bool GetTextExtentPoint32(IntPtr hdc, string lpString,
   int cbString, out SIZE lpSize);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

// the GDI class contains static "gdi32.dll" calls

public Size getExtent(string text, Graphics graphics, Font font)

{

    Size sz = Size.Empty;
    IntPtr hdc = graphics.GetHdc();
    IntPtr oldfnt = GDI.SelectObject(hdc, font.ToHfont());

    GDI.GetTextExtentPoint32(hdc, text, text.Length,out sz);

    // reset old font
    GDI.DeleteObject(GDI.SelectObject(hdc, oldfnt));
    graphics.ReleaseHdc(hdc);
    return sz;

}

Alternative Managed API:

If you are using GDI+ with a Graphics object you can make use of the following code sample:

using System.Windows.Forms; // for TextRenderer

    Size size=TextRenderer.MeasureText(g, str, f, new Size(), TextFormatFlags.NoPadding);

Since .NET padding is added to a fonts height and width. So you need to use the format flag TextFormatFlags.NoPadding to get the real size of the text.

Variables:

    g - is the Graphics object you want to draw on
    str - the string that should be measured
    f - the font you want to use
    new Size() - just a dummy parameter

For more information see

http://msdn.microsoft.com/de-de/library/system.windows.forms.textrenderer(VS.80).aspx

Good luck and have fun (Julian Taupe)

Documentation