我正在使用一个函数来调用要在区域内呈现的文本。 该功能的基本工作是:
Dim measureSize as Size
Do
myFont = new Font(myFont.Name, myFont.Size - 1, FontStyle.Regular, GraphicsUnit.Document)
'Initial font size is set insanely high for the moment, during testing.
'Low initial font size is not the problem.
measureSize = g.MeasureString(myString, myFont)
Loop until (measuredSize.width < desiredSize.width AND measuredSize.height < desiredSize.height)
这个问题是MeasureString在它绘制的字符串周围添加了很多空格,而最终的字体渲染得太小了。
我确信我记得一个可以摆弄的参数,以便从MeasureString方法中删除所有填充,但我的搜索目前没有发现任何东西。
有没有人知道如何使用MeasureString测量字符串的EXACT大小而没有任何边界?
答案 0 :(得分:5)
将StringFormat.GenericTypographic
传递给MeasureString
。我建议不要使用TextRenderer,因为它在渲染到内存中的位图时会出现clear-type问题。
使用TextRenderer进行测量,使用DrawString进行绘图无疑会让你迟早遇到不一致。
答案 1 :(得分:2)
有一篇CodeProject的文章绕过了这个:http://www.codeproject.com/KB/GDI-plus/measurestring.aspx
答案 2 :(得分:0)
您应该尝试使用TextRenderer.MeasureText
,因为它会返回文本的大小,而不是反锯齿时文本的大小。