如何在WPF画布上绘制矩形

u5i3ibmn  于 2022-12-19  发布在  其他
关注(0)|答案(3)|浏览(299)

我尝试在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>

画布显示得很好。我能看出来是因为它在布局网格中留下差距。

3mpgtkmj

3mpgtkmj1#

如果front_canvas显示正确,则此命令会将矩形绘制为200x200的黑色正方形。
为什么这段代码不画一个矩形?
这不会吸引的主要原因是:

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

注意,如果您希望看到指定的Stroke,通常还需要设置StrokeThickness

kx7yvsdv

kx7yvsdv2#

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

rect.StrokeThickness=2;
o7jaxewo

o7jaxewo3#

// ...
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));

相关问题