确定控制台应用程序中文本块的高度

Determining height of a block of text in a console application

我正在尝试确定文本块所需的文本框大小。然后将其导出用于 InDesign 脚本以创建页面。全部在控制台应用程序中。

我尝试创建一个 WPF TextBlock 并分配 TextWidth,但是 HeightActualHeight 是 NaN。

如何确定某些文本所需的文本框大小?使用 WPF/Winforms 文本块是最佳解决方案(尝试利用现有代码),还是有其他更好的工作流程?

C#中有两个类是用来绘制文字的。 TextRenderer 和图形。

TextRenderer 使用 GDI 呈现文本,而 Graphics 使用 GDI+。两者使用略有不同的方法来布置文本。

你可以利用Graphics.MeasureString or TextRenderer.MeasureText

例子

using( Graphics g = Graphics.FromHwnd(IntPtr.Zero) )
{
     SizeF size = g.MeasureString("some text", SystemFonts.DefaultFont);
}

对于您的情况,我建议使用 TextRenderer。文本换行示例 -

var size = TextRenderer.MeasureText(text, font, new Size(width, height), TextFormatFlags.WordBreak);

第三个参数是绘图矩形的大小。如果您不知道,可以将高度作为 0 传递。