Windows Phone:如何在Rectangle上绘制一条线?

Bah*_*ket 2 c# windows-phone-7 windows-phone-8-emulator

我绘制一个矩形,我需要将这个矩形分成两部分.我试图使用线来划分它,但我不知道为什么我看不到这条线.

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);
Run Code Online (Sandbox Code Playgroud)

你知道我怎么能在矩形上添加一条线?

Raj*_*tia 6

以下是如何垂直划分: -

a)你正在绘制一条宽5像素的线,但它不可见,因为你的线是笔划黑色而页面背景也是黑色所以这条线是隐藏的.该线从(2,41)到(7,41).

b)您的矩形位于页面的中心,宽100像素,与页面一样高,因此左上角的线与中心的矩形不相交

c)我建议使用Canvas,因为您可以轻松设置Canvas上每个项目的Top和Left像素位置

我用以下方式修改了你的代码: -

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);
Run Code Online (Sandbox Code Playgroud)

1)LayoutRoot是我在XAML中的Canvas ...我刚刚在默认页面模板中将它从Grid更改为Canvas.

2)我使用这两行来设置画布上rect的位置.您可以将其更改为任何硬编码/编程计算的值.

Canvas.SetLeft(rect, 200);
Canvas.SetTop(rect, 20);
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

X1和X2位置基本上是矩形的左侧位置加上矩形宽度的一半

Y1和Y2位置是矩形顶部和矩形顶部加上矩形​​高度.

将这两个元素添加到Canvas中它将起作用