2013-02-08 125 views
12

我試圖在Canvas如下得出一個Rectangle如何繪製一個矩形上一個WPF畫布

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> 

畫布示出了細。我可以說因爲它在版面網格中留下的空隙。

+0

@ReedCopsey:我可以告訴它不是壓扁,因爲有一個很大的差距在哪裏畫布應該並沒有什麼否則可能會導致它 – Sheena 2013-02-08 22:20:57

回答

8

這應該將您的矩形繪製爲200x200的黑色方塊,只要front_canvas顯示正確。

這段代碼爲什麼不繪製一個矩形?

這不會得出的主要理由是:

  • front_canvas是不可見的
  • front_canvas是不是在視覺樹顯示正確
  • 其他一些FrameworkElement被模糊front_canvas,在至少左上角。
  • 畫布上還有一個更高z順序的對象。

請注意,如果您想查看指定的Stroke,則通常還需要設置StrokeThickness

1

要查看矩形,你必須指定StrokeThickness並設置任何大於零的Integer值:

rect.StrokeThickness=2; 
+1

或填充/背景,或(...)。但這對於新來繪畫的人來說仍然是一個很好的暗示,因爲他們經常忘記,儘管繪製/渲染正確,白色背景上的白色形狀仍不可見;) – quetzalcoatl 2013-07-11 13:07:37