我认为存在一个已知的澄清,为什么这些方法总是返回不同的大小,但无论如何我会稍微解释一下这个问题:
我已经将Progressbar子类化了,当我尝试使用相同的字体获取相同文本的大小时,我得到不同的值,TextRenderer.MeasureText
给我一个舍入值 13 height和 300 宽度,而Graphics.MeasureString
给我一个非常精确的 13,xxxxxx 高度和 275,xxxxxxx
为什么会这样?
我在代码中没有做任何特别的事情,只是我尝试使用这两种方法来比较它是否给我相同的结果或决定在我的代码中使用哪个。
我尝试使用的TextRenderer.MeasureText
超载是:
TextRenderer.MeasureText(String, Font)
Graphics.MeasureString
方法需要相同的参数:
Graphics.MeasureString(String, Font)
答案 0 :(得分:1)
TextRenderer.MeasureText
返回Size
,因此值为整数。 Graphics.MeasureString
返回包含浮点数的SizeF
。
两者都是"原始价值"虽然。在测试某些文本是否适合某个地方时,您可能还需要考虑Control.Padding
,每个类型可能会以不同方式实现。
82, 13
vs。82.85806,13.8251925)。