17

我试图在 aRectangle上绘制Canvas如下:

System.Windows.Shapes.Rectangle rect;
rect = new System.Windows.Shapes.Rectangle();
rect.Stroke = new SolidColorBrush(Colors.Black);
rect.Fill = new SolidColorBrush(Colors.Black);
rect.Width=200;
rect.Height=200;
Canvas.SetLeft(rect,0);
Canvas.SetTop(rect,0);
front_canvas.Children.Add(rect);

为什么这段代码不画一个矩形?

画布在关联的 XAML 中定义如下:

<Canvas Height="200" Width="200" Name="front_canvas" Grid.Row="1" Grid.Column="0">      
</Canvas>

画布显示良好。我可以说是因为它在布局网格中留下的间隙。

4

2 回答 2

9

front_canvas如果显示正确,这应该将您的矩形绘制为 200x200 黑色正方形。

为什么这段代码不画一个矩形?

这不会绘制的主要原因是:

  • front_canvas不可见
  • front_canvas不在可视化树中并正确显示
  • 其他一些FrameworkElement是模糊front_canvas的,至少是左上角。
  • 画布中有另一个更高 z 顺序的对象。

StrokeThickness请注意,如果您想查看Stroke您指定的内容,您通常还需要设置。

于 2013-02-08T22:13:07.573 回答
2

要查看矩形,您必须指定StrokeThickness并设置任何Integer大于零的值:

rect.StrokeThickness=2;
于 2013-07-11T12:54:57.747 回答