使用GDI+Graphics.MeasureString问题编程测量文本长度

本文关键字:文本 测量 编程 GDI+Graphics MeasureString 问题 使用 | 更新日期: 2023-09-27 17:58:23

我有以下代码在我的本地机器(Win 7,.NET 4)上运行,但它似乎在服务器上不起作用。我想通过程序测量文本长度

有人能帮忙吗?

private float GetTextSize(string text, float textSize)
{
    using (Bitmap bmp = new Bitmap(1, 1))
    {
        bmp.SetResolution(96, 96);
        using (Graphics g = Graphics.FromImage(bmp)) 
        {
            using (System.Drawing.Font font = new System.Drawing.Font(fontName, textSize))
            {
                return g.MeasureString(text, font).Width;
            }
        }
    }
}

如果有更好的解决方案,我会考虑的。

更新:

如何检测机器上是否有可用的字体类型?

更新2:

为什么我的问题得负分?有人能投赞成票吗。

提前感谢!

使用GDI+Graphics.MeasureString问题编程测量文本长度

问题是,即使对于具有相同数字字符的文本,它也会返回不同的文本长度,例如,对于某些字体类型,1234比abcd长。我以前的逻辑是比较每个文本的字符数,并将最长的文本传递给该方法,基于这个原因,这是不正确的。

解决方案是为每个文本调用该方法,并且该方法返回的文本长度可以可靠地进行比较。