在.NET6+上测量文本宽度和高度

问题描述 投票:0回答:1

是否有可能在.NET6+跨平台上测量文本宽度和高度? 比如:

var font = new Font("Arial", 16);
var gfx = Graphics.FromImage(new Bitmap(1, 1));
var size = gfx.MeasureString("mystring", font);

目标:

  • 我想知道文字的宽度和高度(以毫米为单位)
  • 我的应用程序应该以 Linux 为目标

实际结果:

TextRenderer.MeasureText
函数是
System.Windows.Forms
的一部分,仅限于
-windows

另一个选项是

Graphics.MeasureString
,它是
System.Drawing
的一部分,通常可用,没有太多依赖性,但此功能也被标记为
-windows

c# .net system.drawing
1个回答
0
投票

谢谢@panagiotis-kanavos

SixLabors.ImageSharp.Drawing
正在提供这样的功能,并且完全跨平台兼容:

var font = SystemFonts.CreateFont("Arial", 10);
var fontRectangle = TextMeasurer.MeasureAdvance("Foo", new TextOptions(font));
© www.soinside.com 2019 - 2024. All rights reserved.