次のようにRectangle
にCanvas
を描画しようとしています。
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>
キャンバスがうまく表示されます。レイアウトグリッドに残っているギャップがあるため、わかります。
front_canvas
が正しく表示されていれば、長方形は200x200の黒い正方形として描画されます。
なぜこのコードは長方形を描画しないのですか?
これが描かれない主な理由は次のとおりです。
front_canvas
は表示されませんfront_canvas
はビジュアルツリーに含まれておらず、正しく表示されていますFrameworkElement
は、少なくとも左上隅のfront_canvas
を覆い隠しています。指定したStrokeThickness
を表示したい場合は、通常 Stroke
を設定することにも注意してください。
長方形を表示するには、StrokeThickness
を指定し、ゼロより大きいInteger
値を設定する必要があります。
rect.StrokeThickness=2;