我想找到正確的方法來計算C#中指定字體的文本寬度。 我有以下Java中的做法,似乎它的工作原理:確定文本寬度
public static float textWidth(String text, Font font) {
// define context used for determining glyph metrics.
BufferedImage bufImage = new BufferedImage(2 /* dummy */, 2 /* dummy */, BufferedImage.TYPE_4BYTE_ABGR_PRE);
Graphics2D g2d = (Graphics2D) bufImage.createGraphics();
FontRenderContext fontRenderContext = g2d.getFontRenderContext();
// determine width
Rectangle2D bounds = font.createGlyphVector(fontRenderContext, text).getLogicalBounds();
return (float) bounds.getWidth();
}
但看我的代碼在C#:
public static float TextWidth(string text, Font f)
{
// define context used for determining glyph metrics.
Bitmap bitmap = new Bitmap(1, 1);
Graphics grfx = Graphics.FromImage(bitmap);
// determine width
SizeF bounds = grfx.MeasureString(text, f);
return bounds.Width;
}
我對上述相同的字體兩種功能不同的值。爲什麼?在我的情況下,正確的方法是什麼?
UPDATE:本TextRenderer.MeasureText方法只給出整數測量。我需要更多的預告結果。
Java和「.Net」(c#,VB.NET,else)使用不同的庫 – umlcat 2014-10-22 17:31:48