使用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:
为什么我的问题得负分?有人能投赞成票吗。
提前感谢!
问题是,即使对于具有相同数字字符的文本,它也会返回不同的文本长度,例如,对于某些字体类型,1234比abcd长。我以前的逻辑是比较每个文本的字符数,并将最长的文本传递给该方法,基于这个原因,这是不正确的。
解决方案是为每个文本调用该方法,并且该方法返回的文本长度可以可靠地进行比较。