C# 如何计算身高和身高;具有特定字体系列的字符串宽度&;字体大小?

C# 如何计算身高和身高;具有特定字体系列的字符串宽度&;字体大小?,c#,windows-8,windows-runtime,microsoft-metro,windows-store-apps,C#,Windows 8,Windows Runtime,Microsoft Metro,Windows Store Apps,我想在WinRT应用程序中实现 我知道我可以使用SharpDX来渲染文本,你可以查看我的。我想知道如何创建一个白色背景图像的大小与能力,以适应文本与字体家族Segoe用户界面和字体大小为16 我发现了如何创建白色图像。但我如何计算长字符串(比如2000多个字符)的大小,这将在白色图像上渲染 我已经检查过了,但得到的值不正确。我不知道在Arrange(…)和Measure(…)方法中作为参数传递什么。我将Window.Current.Bounds作为参数传递。我想要这样的东西 private do

我想在WinRT应用程序中实现

我知道我可以使用SharpDX来渲染文本,你可以查看我的。我想知道如何创建一个白色背景图像的大小与能力,以适应文本与字体家族Segoe用户界面和字体大小为16

我发现了如何创建白色图像。但我如何计算长字符串(比如2000多个字符)的大小,这将在白色图像上渲染

我已经检查过了,但得到的值不正确。我不知道在
Arrange(…)
Measure(…)
方法中作为参数传递什么。我将
Window.Current.Bounds
作为参数传递。我想要这样的东西

private double GetHeight(string Text, string fontFamily, double fontSize)
{
    //TODO:
}
更新1

据我所知,我尝试了这个,但它也给了我不正确的值

TextBlock textBlock = new TextBlock();
private double GetHeight(string Text)
{
    var scroller = new ScrollViewer();
    scroller.Height = Window.Current.Bounds.Height;
    scroller.Width = Window.Current.Bounds.Width;
    scroller.Content = textBlock;

    textBlock.Text = Text;
    textBlock.FontFamily = new FontFamily("Segoe UI");
    textBlock.FontSize = 40;
    textBlock.TextWrapping = TextWrapping.Wrap;
    textBlock.Arrange(new Rect(0, 0, 9000000000, 9000000000));
    textBlock.Measure(new Size(9000000000, 9000000000));

    root.Children.Add(scroller);

    return textBlock.ActualHeight; //return 478.82919311523437
}

// root is the Root grid of the app, there's nothing in XAML
private void root_Tapped_1(object sender, TappedRoutedEventArgs e)
{
    var aa = textBlock.ActualHeight; //return 2766.5732421875
}

您是否搜索过可以测量文本的解决方案?(我想这就是你所指的)我试过了,但是它给了我不正确的值。不正确的意思是它不是实际的值。我尝试在paint中手动创建一个图像,它的高度接近1000+像素,但当我使用arrange&measure时,它提供了接近700+像素,我怀疑arrange&measure的论点。我正在将
窗口.Current.Bounds
作为参数传递。在
度量
之前调用
排列
?我认为这不是正确的顺序。并不是说我保证它会给出正确的结果。