2

我在 C# 中有一个固定宽度(高度不是问题)标签组件。现在我想计算如果提供了字体大小和字体系列,大约有多少字符适合该宽度。我知道每个字符在渲染时都采用不同的像素,因此无法获得确切的字符数。但是,我认为如果我们采用不占用更多像素的字母并考虑该字母进行计算,我们将能够根据提供的字体获得适合固定宽度的近似字符数。因此,如果我们将字符“W”视为最宽的字符,那么我将如何计算适合特定宽度的“W”的数量。

我不能使用 GDI+Graphics.MeasureString方法,因为我需要在渲染角色之前使用它。

当我使用 GDITextRenderer类时

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

它返回{59.0, 44.0},我发现这是完全错误的,因为如果我将标签的宽度设为 80 px,根据上面的计算它将只有一个 'W' 但实际上并非如此。

那么有人能告诉我哪里出错了吗?

4

1 回答 1

3

您可以使用以下内容:

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

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

于 2013-08-01T15:24:54.900 回答