c# - 如何在 WPF Canvas 上绘制矩形

标签 c# 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);

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

Canvas 在关联的 XAML 中定义如下:

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

Canvas 显示正常。我可以分辨出来,因为它在布局网格中留下了空隙。

最佳答案

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

Why would this code not draw a rectangle?

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

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

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

关于c# - 如何在 WPF Canvas 上绘制矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782158/

相关文章:

python - Tkinter 错误 : Couldn't recognize data in image file

javascript - HTML Canvas 仅在浏览器调整大小后触发?

graphics - 减少脂肪中风

c# - 在 .NET 中通过格式字符串发出冒号

c# - 无法使 DelegateDecompiler 中的 ShouldDecompile 配置正常工作

c# - 暂停时静音

c# - 检查 FrameworkElement 是否有 Border

c# - HttpWebResponse 发送到网络浏览器?

wpf - 为什么这个 StringFormat 不起作用?

c# - 如何将文本 block 属性继承到 C# 中的自定义控件