【问题标题】:How to draw a rectangle on a WPF canvas如何在 WPF 画布上绘制矩形
【发布时间】:2013-01-24 18:50:14
【问题描述】:

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

画布显示良好。我可以看出它在布局网格中留下的间隙。

【问题讨论】:

  • @ReedCopsey:我可以说它没有被压扁,因为画布应该在的地方有一个很大的间隙,没有其他原因会导致它

标签: c# wpf canvas


【解决方案1】:

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

rect.StrokeThickness=2;

【讨论】:

  • 或填充/背景,或 (...)。但这对于刚开始绘画的人来说仍然是一个很好的提示,因为他们经常忘记尽管正确绘制/渲染,但白色背景上的白色形状是不可见的;)
【解决方案2】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2016-11-11
    • 2017-06-30
    相关资源
    最近更新 更多