gpt4 book ai didi

银光 : How to predict string size?

转载 作者:行者123 更新时间:2023-12-04 05:43:40 26 4
gpt4 key购买 nike

我在 Silverlight 处理布局的方式方面面临很多问题。主要是,我找不到一种方法来预测字符串在实际绘制之前占用的大小。在 iPhone 上,我们有一些非常简单的方法,可以让我们根据字体大小、自动换行选项和可用宽度和/或高度来确定字符串在屏幕上所占的大小。但是使用 Silverlight,我找不到在我的应用程序中获得一致结果的方法。

我目前正在使用 TextBlock 实例的 ActuelHeight 和 ActualWidth ,但它给了我随机结果。例如,我使用以下代码...

TextBlock proto = new TextBlock();

proto.Width = 456;
proto.TextWrapping = TextWrapping.Wrap;
proto.Text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
double h = proto.ActualHeight;

...h 设置为 66 像素!正如您自己猜测的那样,如此长的文本不可能适合 456 像素宽和 66 像素高的矩形。当我在 Canvas 中添加文本块时确认了这一点,将其大小设置为 {456;66} 并测试应用程序:文本根本不适合文本块!

有人可以向我解释问题出在哪里,并指出一种一致(且值得信赖)的方法来测量字符串大小吗?

提前致谢,

埃里克。

最佳答案

你可以问TextBlock通过调用其 Measure 来测量自身(尚未显示)方法:

textBlock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
var width = textBlock.DesiredSize.Width;
var height = textBlock.DesiredSize.Height;

当然,它可能没有无限的宽度和高度,因此根据您的用例,您可能更喜欢让根元素测量自身,这将反过来测量所有子元素(包括 TextBlock )。

关于银光 : How to predict string size?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com