如何在WPF画布上绘制矩形

时间:2013-02-08 22:10:33

标签: c# wpf canvas

我正在尝试在Rectangle上绘制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>

画布显示正常。我可以告诉它,因为它在布局网格中留下了差距。

2 个答案:

答案 0 :(得分:9)

如果正确显示front_canvas,则应将矩形绘制为200x200黑色方块。

  

为什么这段代码不会绘制矩形?

这不会引起的主要原因是:

  • front_canvas不可见
  • front_canvas不在可视化树中并且正确显示
  • 其他一些FrameworkElement遮挡了front_canvas,至少在左上角。
  • 画布中的另一个对象的z顺序较高。

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

答案 1 :(得分:2)

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

rect.StrokeThickness=2;