【发布时间】:2016-10-01 12:25:57
【问题描述】:
我在 C# 中有一个固定宽度(高度不是问题)标签组件。现在我想计算如果提供了字体大小和字体系列,大约有多少字符适合该宽度。我知道每个字符在渲染时都采用不同的像素,因此无法获得确切的字符数。但是,我认为如果我们采用不占用更多像素的字母并考虑该字母进行计算,我们将能够根据提供的字体获得适合固定宽度的近似字符数。因此,如果我们将字符“W”视为最宽的字符,那么我将如何计算适合特定宽度的“W”的数量。
我不能使用 GDI+ Graphics.MeasureString 方法,因为我需要在渲染角色之前使用它。
当我使用 GDI TextRenderer 类时
SizeF sizeOfW = TextRenderer.MeasureText("W", new Font("DejaVu Sans", 28.0F));
它返回{59.0, 44.0},我发现这是完全错误的,因为如果我将标签的宽度设为80 px,根据上面的计算它只会有一个'W',但实际上并非如此。
那么谁能告诉我哪里出错了?
【问题讨论】:
-
该标签是否显示多个具有相同字体的“W”?
-
它显示了 2 个 w,这不应该是这种情况,因为 59 + 59 = 118 并且它们在 80 和 118 之间有很大差异
-
那么
TextRenderer.MeasureText("WW", new Font("DejaVu Sans", 28.0F))会为您返回什么? -
This question 和那里的答案(也是不被接受的答案)可以给出正确的方向
标签: c# .net winforms size pixels