[DllImport("gdi32.dll")]
static extern bool GetTextExtentPoint32(IntPtr hdc, string lpString,
int cbString, out SIZE lpSize);
None.
None.
Please add some!
// 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;
}
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)