'TextRenderer.MeasureText'的大小与'Graphics.MeasureString'不同

时间:2014-07-15 17:30:03

标签: .net vb.net string winforms text

我认为存在一个已知的澄清,为什么这些方法总是返回不同的大小,但无论如何我会稍微解释一下这个问题:

我已经将Progressbar子类化了,当我尝试使用相同的字体获取相同文本的大小时,我得到不同的值,TextRenderer.MeasureText给我一个舍入值 13 height和 300 宽度,而Graphics.MeasureString给我一个非常精确的 13,xxxxxx 高度和 275,xxxxxxx

为什么会这样?

我在代码中没有做任何特别的事情,只是我尝试使用这两种方法来比较它是否给我相同的结果或决定在我的代码中使用哪个。

我尝试使用的TextRenderer.MeasureText超载是:

TextRenderer.MeasureText(String, Font)

Graphics.MeasureString方法需要相同的参数:

Graphics.MeasureString(String, Font)

1 个答案:

答案 0 :(得分:1)

TextRenderer.MeasureText返回Size,因此值为整数。 Graphics.MeasureString返回包含浮点数的SizeF

两者都是"原始价值"虽然。在测试某些文本是否适合某个地方时,您可能还需要考虑Control.Padding,每个类型可能会以不同方式实现。

然而,275对300似乎是一个很大的变化。我有一个复选框,返回82, 13 vs。82.85806,13.8251925)。