我想在WinRT应用中实现this。
我知道我可以使用SharpDX来渲染文本,你可以查看我的CodeProject article。 我想知道如何创建一个大小的白色背景图像,其容量可以容纳带有字体系列Segoe UI且字体大小为16的文本?
我发现了如何创建白色图像。但是我如何计算长字符串的大小(如2000+个字符),它将在白色图像上渲染?
我已经检查了how to calculate the textbock height and width in on load if i create textblock from code?,但我的价值不正确。我不知道在Arrange(...)
& Measure(...)
方法。我正在传递Window.Current.Bounds
作为参数。我想要这样的东西。
private double GetHeight(string Text, string fontFamily, double fontSize)
{
//TODO:
}
更新1
根据Filip's suggestion我试过这个,但它也给了我不正确的价值。
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
}