2

我画了一个矩形,我需要把这个矩形分成两部分。我正在尝试使用线来划分它,但我不知道为什么我看不到线。

Rectangle rect = new Rectangle();
rect.Fill= Colors.Blue;
rect.Width=100;
rect.Margin = new Thikness (0,40,0,0);
grid.Children.Add(rect);

Line line = new Line();
line.Stroke = Colors.Black;
line.StrokeThickness=1;
line.X1=2; 
line.X2=7;
line.Y1=41;
line.Y2=41;
 grid.Children.Add(line);

你知道如何在矩形上添加一条线吗?

4

1 回答 1

6

这是垂直划分的方法:-

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 位置是矩形顶部和矩形顶部加上矩形​​高度。

将这两个元素添加到画布中,它将起作用

于 2013-08-13T05:10:31.683 回答