代码之家  ›  专栏  ›  技术社区  ›  Frosty840

graphics.measurestring允许太多空白

  •  2
  • Frosty840  · 技术社区  · 16 年前

    我正在使用一个函数来调用在一个区域内呈现一段文本。 该功能的基本工作是:

    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来测量字符串的精确大小而不带任何边界吗?

    3 回复  |  直到 16 年前
        1
  •  2
  •   vgru    16 年前

    有一篇代码项目的文章绕过了这一点: http://www.codeproject.com/KB/GDI-plus/measurestring.aspx

        2
  •  5
  •   Roman Starkov    16 年前

    通过 StringFormat.GenericTypographic MeasureString . 我建议不要使用文本渲染器,因为它在渲染到内存位图时存在清除类型问题。

    使用textprenderer进行测量,使用drawstring进行绘制,无疑迟早会导致不一致。

        3
  •  0
  •   Pondidum    16 年前

    你应该试试看 TextRenderer.MeasureText ,因为它返回文本的大小,而不是文本的大小(如果是消除混叠的)。

    MSDN Article

    推荐文章