这是垂直划分的方法:-
a)您正在绘制一条 5 像素宽的线,但它不可见,因为您的线是黑色的,页面背景也是黑色的,所以该线被隐藏了。这条线是从 (2,41) 到 (7,41) 绘制的。
b)您的矩形位于页面的中心,100 像素宽,与页面一样高,因此左上角的线与中心的矩形不相交
c)我建议使用 Canvas,因为您可以轻松设置 Canvas 上每个项目的顶部和左侧像素位置
我通过以下方式修改了您的代码:-
Rectangle rect = new Rectangle();
rect.Fill = new SolidColorBrush(Colors.Blue);
rect.Width = 100;
rect.Height = 200;
Canvas.SetLeft(rect, 200);
Canvas.SetTop(rect, 20);
LayoutRoot.Children.Add(rect);
Line line = new Line();
line.Stroke = new SolidColorBrush(Colors.White);
line.StrokeThickness = 1;
line.X1 = Canvas.GetLeft(rect) + rect.Width / 2;
line.X2 = Canvas.GetLeft(rect) + rect.Width / 2;
line.Y1 = Canvas.GetTop(rect);
line.Y2 = Canvas.GetTop(rect) + rect.Height;
LayoutRoot.Children.Add(line);
1) LayoutRoot 是我在 XAML 中的 Canvas ...我刚刚在默认页面模板中将它从 Grid 更改为 Canvas。
2)我用这两行来设置矩形在画布上的位置。您可以将其更改为任何硬编码/以编程方式计算的值。
Canvas.SetLeft(rect, 200);
Canvas.SetTop(rect, 20);
3)我在这里计算了线的X和Y位置
line.X1 = Canvas.GetLeft(rect) + rect.Width / 2;
line.X2 = Canvas.GetLeft(rect) + rect.Width / 2;
line.Y1 = Canvas.GetTop(rect);
line.Y2 = Canvas.GetTop(rect) + rect.Height;
X1 和 X2 的位置基本上就是 rect 的 Left 位置加上 rect 宽度的一半
Y1 和 Y2 位置是矩形顶部和矩形顶部加上矩形高度。
将这两个元素添加到画布中,它将起作用