是否有可能在.NET6+跨平台上测量文本宽度和高度? 比如:
var font = new Font("Arial", 16);
var gfx = Graphics.FromImage(new Bitmap(1, 1));
var size = gfx.MeasureString("mystring", font);
目标:
实际结果:
TextRenderer.MeasureText
函数是System.Windows.Forms
的一部分,仅限于-windows
。
另一个选项是
Graphics.MeasureString
,它是 System.Drawing
的一部分,通常可用,没有太多依赖性,但此功能也被标记为 -windows
。
SixLabors.ImageSharp.Drawing
正在提供这样的功能,并且完全跨平台兼容:
var font = SystemFonts.CreateFont("Arial", 10);
var fontRectangle = TextMeasurer.MeasureAdvance("Foo", new TextOptions(font));