C# 使用GDI+;图表.测量问题

C# 使用GDI+;图表.测量问题,c#,graphics,drawing,gdi+,C#,Graphics,Drawing,Gdi+,我有以下代码在本地机器上运行(Win7、.NET4),但在服务器上似乎不起作用。我想以编程方式测量文本长度 有人能帮忙吗 private float GetTextSize(string text, float textSize) { using (Bitmap bmp = new Bitmap(1, 1)) { bmp.SetResolution(96, 96); using (Graphics g = Graphics.FromImage(b

我有以下代码在本地机器上运行(Win7、.NET4),但在服务器上似乎不起作用。我想以编程方式测量文本长度

有人能帮忙吗

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;
            }
        }
    }
}
如果可以的话,我会考虑任何更好的解决方案。< /P> 更新:

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

更新2:

为什么我的问题会被扣分?请任何人投弃权票


提前谢谢

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


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

您能定义“不工作”吗?也许这个字体不存在?@rudi_visser:这意味着它的性能不如预期。“还有什么?”:)那太好了,但它到底有什么用呢?谢谢你的建议。如何检测机器上是否有可用的字体类型?如果字体类型不可用,它会导致异常吗?@rudi_visser它会根据指定的文本和字体大小以编程方式测量文本长度。