如果c#中提供了字体,是否可以计算出固定宽度标签中可以容纳多少字符?

本文关键字:固定宽度标签 多少 字符 计算 字体 如果 是否 | 更新日期: 2023-09-27 17:54:51

我在c#中有一个固定的宽度(高度不是问题)标签组件。现在我想计算一下,如果提供了字体大小和字体族,这个宽度大约可以容纳多少字符。我知道每个字符在渲染时需要不同的像素,所以不可能得到确切的字符数量。但是,我认为,如果我们用更多像素的字母并考虑该字母进行计算,我们将能够根据所提供的字体得到适合固定宽度的字符的大致数量。因此,如果我们考虑字符'W'作为最宽的字符,那么我将如何计算适合特定宽度的'W'的数量。

我不能使用GDI+ Graphics.MeasureString方法,因为我想在渲染字符之前使用它。

当我使用GDI TextRenderer

SizeF sizeOfW = TextRenderer.MeasureText("W", new Font("DejaVu Sans", 28.0F));

它返回{59.0, 44.0},我发现这是完全错误的,因为如果我把标签的宽度作为80像素,根据上面的计算,它将只有一个'W',但在现实中不是这样的。

所以有人能告诉我哪里错了吗?

如果c#中提供了字体,是否可以计算出固定宽度标签中可以容纳多少字符?

您可以使用以下命令:

var g=Graphics.FromHwnd(label1.Handle);
int charFitted, linesFitted;
g.MeasureString(mystring, label1.Font, label1.Size, null, 
                 out charFitted, out linesFitted);

执行后,您将有label1可以显示的字符数量进入charFitted