/// <summary> /// Returns the Size of the given text using the specified font if not null, otherwise the font currently /// set in the dc is used. /// This method is used to get the size in points of a line of text; it uses GetTextExtentPoint32 function /// which computes the width and height of the text ignoring TAB\CR\LF characters. /// A text extent is the distance between the beginning of the space and a character that will fit in the space. /// </summary> public Size GetTextExtent(string text, WindowsFont font) { if (string.IsNullOrEmpty(text)) { return(Size.Empty); } Size size = new Size(); if (font != null) { DeviceContext.SelectFont(font); } Gdi32.GetTextExtentPoint32W(DeviceContext.Hdc, text, text.Length, ref size); // Unselect, but not from Measurement DC as it keeps the same // font selected for perf reasons. if (font != null && !MeasurementDCInfo.IsMeasurementDC(DeviceContext)) { DeviceContext.ResetFont(); } return(new Size(size.Width, size.Height)); }