我有一个应用程序,我需要在其中将内容动态构建到 Canvas。一切正常,但我有点不确定如何以最安全的方式设置标签的 y 坐标。例如,我需要添加三个本质上是文本行的标签。在 Java Swing 或 C# GDI 中,我只需查询字体的行高并将该值添加到 drawText 命令的 y 坐标。
这是我的代码。
double y = 0.0;
_line1.Content = "Line1";
_line1.SetValue(Canvas.TopProperty, y);
_line1.SetValue(Canvas.LeftProperty, 0.0);
CanvasChart.Children.Add(_line1);
double textHeight = _line1.Height;
y += textHeight;
_line2.Content = "Line2";
_line2.SetValue(Canvas.TopProperty, 0.0);
_line2.SetValue(Canvas.LeftProperty, y);
CanvasChart.Children.Add(_line2);
这不起作用,因为此时 _line1.Height 似乎没有设置为任何有用的值。我想它还没有渲染。上面的代码在窗口的加载事件中。ActualHeight 也无济于事。
我见过的大多数代码似乎只是将它们设置为硬编码值。我想这在开发人员的显示器上看起来不错,你只是希望在其他分辨率/DPI 上看起来不错。在 Swing 和 GDI 中,我总是能得到最好的结果,准确地找出一个字符串将在多少像素处渲染,并使用它来偏移下一行。