C# 如何计算UWP中FontFamily的高度?

C# 如何计算UWP中FontFamily的高度?,c#,.net,fonts,uwp,C#,.net,Fonts,Uwp,我想知道如何在Windows通用应用程序中计算给定FontFamily的高度 在UWP中,FontFamily对象具有linespace属性,可以计算最大高度以分配字体的所有图示符,但它不适用于UWP应用程序 注意:关于“重复声明”,使用文本块测量高度不是我的选择。除了是一个丑陋的把戏之外,它还使用一个UI对象来完成它。在我的例子中,我不能这样做,因为我自己正在制作一个GUI框架。依赖UWP框架内部的对象本身是没有意义的。您可以使用TextBlock的测量方法来测量宽度和高度。这有点老套,但确实

我想知道如何在Windows通用应用程序中计算给定
FontFamily
的高度

UWP中,
FontFamily
对象具有
linespace
属性,可以计算最大高度以分配字体的所有图示符,但它不适用于UWP应用程序


注意:关于“重复声明”,使用文本块测量高度不是我的选择。除了是一个丑陋的把戏之外,它还使用一个UI对象来完成它。在我的例子中,我不能这样做,因为我自己正在制作一个GUI框架。依赖UWP框架内部的对象本身是没有意义的。

您可以使用TextBlock的测量方法来测量宽度和高度。这有点老套,但确实管用

private Size MeasureString(string textToMeasure, Size availableSize, double fontSize, string fontFamily)
{
    var tb = new TextBlock();

    tb.TextWrapping = TextWrapping.Wrap;
    tb.Text = textToMeasure;
    tb.FontFamily = new FontFamily(fontFamily);
    tb.FontSize = fontSize;
    tb.Measure(new Size(Double.PositiveInfinity, double.PositiveInfinity));

    return new Size(tb.ActualWidth, tb.ActualHeight);
}
这里的诀窍是在度量方法中使用一个无限大小来获得实际大小


另一个可行的选择是使用微软的图书馆。它有一个类,包含您要查找的所有内容。我还没有亲自使用过它,但它应该可以满足您的需要。

对不起,我不能这样做。我正在创建一个GUI框架,我不能使用任何本机控件来计算它。@SuperJMN有意义。看起来我在你发表评论之前编辑了我的帖子。我添加了另一个不使用任何本机控件的选项。好的!请参考我的新问题。类似乎是在内部使用的。我也不知道如何使用它:(我不能直接实例化它,文档也解释不了太多。哦,我的错。我在我的Windows电脑上一看就知道了。你看了吗?:)谢谢!