Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

gettextextentpoint (gdi32)
 
.
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:

If you need to treat unicode text, you'll need to set the CharSet option to Unicode or Auto (which is default on WindowsNT)

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

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 has been added to font's height and width. So you need to make use of 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 https://pinvoke.net/emoticons/wink_smile.gif (Julian Taupe)

Documentation

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions