0

我想在 WinRT 应用程序中实现这一点。

我知道我可以使用 SharpDX 来渲染文本,您可以查看我的CodeProject 文章我想知道如何创建一个大小的白色背景图像,以容纳具有字体系列 Segoe UI 和字体大小为 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
}
4

0 回答 0