繁体   English   中英

如何在 WPF 画布上绘制矩形

[英]How to draw a rectangle on a WPF canvas

我正在尝试在Canvas上绘制一个Rectangle ,如下所示:

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>

画布显示正常。 我可以说是因为它在布局网格中留下了空隙。

这应该将您的矩形绘制为200x200黑色方块,前提是front_canvas正确显示。

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

这不会得出的主要原因是:

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

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

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

rect.StrokeThickness=2;
// ...
front_canvas.Children.Add(rect);
Size size = new Size(front_canvas.Width, front_canvas.Height);
front_canvas.Measure(size);
front_canvas.Arrange(new Rect(size));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM