c# - 在 C#/.NET 中,Graphics.MeasureString 方法给出的高度不正确

标签 c# asp.net gdi+ text-rendering

当文本换行为固定宽度时,为什么 MeasureString 返回不正确的文本字符串高度?

var labelFont = new Font("Courier New", 11, FontStyle.Bold);
StringFormat format = StringFormat.GenericTypographic;
format.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;    
var size = g.MeasureString("This is a very very very very very very very very very long string", labelFont, 300, format);

size.Height 给出的值不正确。我发现我需要取返回高度的大约 1/3 才能得到类似于真实高度的东西。

我正在尝试将文本字符串绘制到背景图像上;所以我需要知道换行文本的高度,以便知道下一个文本字符串的原点 y 值。

此代码正在 ASP.NET Web 应用程序中使用。

最佳答案

您的 MeasureString 调用指定字符串的最大宽度为 300。这意味着非常长的字符串被分成多行,这会导致计算出的字符串高度更高。

请注意,字符串的最大宽度不是以字符为单位,而是以像素为单位。

关于c# - 在 C#/.NET 中,Graphics.MeasureString 方法给出的高度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17952564/

相关文章:

c# - 没有临时文件的 OpenXML 文件下载

asp.net - SEO 动态/AJAX 页面

c# - 用渐变颜色绘制一条线

c# - 如何缩放字体以适合指定的矩形

c# - 访问修饰符会影响性能吗?

c# - 如何从 C# 中的 C++ exe 获取文件版本信息?

c# - 如何将 DataSet a 转换为 DataReader?

c# - 如何将此字符串转换为整数数组?

c# - 如何从asp.net sql成员(member)资格提供程序中的id获取角色?

c# - 快速多窗口渲染