【问题标题】:Calculate the display width of a string in C#?在C#中计算字符串的显示宽度?
【发布时间】:2008-11-04 21:56:14
【问题描述】:

刚刚回答了这个问题的 Java 版本,而且,我不知道如何在 .net 中执行此操作。

那么在C#/.net中如何计算字符串的显示宽度呢?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    Windows 窗体的替代方法是静态 TextRenderer.MeasureText 方法。

    虽然限制为整数大小,但它(与 TextRenderer.DrawText 一起使用)比 Graphics.MeasureString/DrawString 二重奏呈现更准确和更高质量的 ClearType 文本。

    【讨论】:

    【解决方案2】:

    您在这个问题中遇到了与 Java 问题中相同的问题 - 信息不足! WinForms 和 WPF 之间会有所不同。

    对于 WinForms:Graphics.MeasureString

    对于 WPF 我不确定,但我怀疑这将取决于您绘制文本的确切方式...

    【讨论】:

    • 在 WPF 中,您将使用 FormattedText,msdn.microsoft.com/en-us/library/…
    • 你将如何在 ASP.NET 中做到这一点?
    • @Shimmy:在 ASP.NET 中,这完全取决于浏览器的功能。这真的不是您在网络应用程序中尝试做的那种事情 - 您将使用 CSS 来控制格式。
    • @JonSkeet 不一定要准确,我只需要创建一个函数来组成长文件名的摘要,然后将其截断并保留扩展名,即 msdfjkasdfjhkjhadf...pdf
    • @Shimmy:这不是准确性的问题 - 这是一个基本上无法从服务器端预测的问题。如果在任何地方,您都需要在客户端执行此操作。但无论如何,这绝对不是 .NET 问题。我建议您提出一个新问题,非常准确地提出您的要求。
    【解决方案3】:

    在 WPF 中,您将使用 FormattedText

    【讨论】:

    • 大写文本未正确测量。
    【解决方案4】:

    Graphics.MeasureString 但它有点蹩脚,正如解释和改进的那样; here

    【讨论】:

      【解决方案5】:

      您将使用 Graphics.MeasureString。

      http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx

      【讨论】:

      • WinForms 控件首先公开了一个CreateGraphics 方法,可用于创建Graphics 对象(其构造函数是私有的)
      【解决方案6】:

      Graphics.MeasureString([要测量的文本],[用于测量文本的字体]);

      生成的对象将提供以下内容:

      MeasureString 的其他重载也可用。

      【讨论】:

        猜你喜欢
        • 2010-09-20
        • 2015-07-31
        • 2013-10-17
        • 1970-01-01
        • 1970-01-01
        • 2019-04-08
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        相关资源
        最近更新 更多