如何在.NET Core中查找字体和字符串度量?

4
我需要在.NET Core 2中测量字符串的像素宽度和高度。在.NET Framework中,可以使用“Graphics.MeasureString”方法来实现,但是在.NET Core中,Graphics类不再存在。
我还尝试查找Font或FontFamily类,并提取字体大小、字体上升和字体下降,但我找不到任何类似的东西。
在当前的.NET Core版本中,仍在努力工作,是否有可能测量字符串或获取字体指标?
2个回答

6

更新 2017年11月17日

.NET Core的Windows兼容性包已经推出预览版,其中包括System.Drawing.Common,并且很快将包括System.Drawing包。

可以使用CoreCompat.System.Drawing.v2 NuGet包,该包提供了基于Mono的System.Drawing程序集的跨平台实现。我目前在Windows、Linux和macOS上使用它进行CI运行,目前没有遇到任何大问题。

DotNet团队已经完成了将System.Drawing功能移植到.NET Core的工作(请参见CoreFX GitHub库中的问题#20325 在.NET Core上支持完整的System.Drawing功能和问题#24909 发布.NET Framework兼容性包)。首个预览版计划于2017年11月发布。

发布计划与.NET Core 2.1.0版本一起,并联合.NET Framework Microsoft兼容性包。该包将支持除Windows UWP之外的所有主要平台。

Graphics.MeasureString函数的实现在这里


我看到System.Drawing正在进行中,但我不知道下一个版本将在本月发布。我会等待2.1版本。谢谢@Jacek。 - alex.pulver
非常感谢您的更新。兼容性包一切正常运行。您是否知道什么时候System.Drawing会在.NET Core中提供,从而实现操作系统无关性? - alex.pulver
1
@alexpulver 它将与Core v2.1一同于2018年第二季度发布。 - Jacek Blaszczynski

2

我是CoreCompat.System.Drawing的维护者。如果你正在使用.NET Core 2.0,我建议你切换到System.Drawing.Common。虽然还没有发布,但在NuGet上已经有了预览版,应该可以直接替换CoreCompat.System.Drawing。


你为什么更喜欢它而不是CoreCompat.System.Drawing?我从NuGet安装了最新的预览版,但对象目录为空。 - wischi
System.Drawing.Common是由Microsoft维护的跨平台版本的System.Drawing。在Windows上,它使用与.NET版本的System.Drawing相同的代码。在macOS和Linux上,它使用大部分.NET System.Drawing代码和Mono的System.Drawing的部分。简而言之,System.Drawing.Common更兼容且维护得更好。如果您遇到System.Drawing.Common的问题,请在https://github.com/dotnet/corefx上搜索问题(或打开新问题)。 - Frederik Carlier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接