web-dev-qa-db-ja.com

WPFキャンバスに四角形を描画する方法

次のようにRectangleCanvasを描画しようとしています。

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>

キャンバスがうまく表示されます。レイアウトグリッドに残っているギャップがあるため、わかります。

13
Sheena

front_canvasが正しく表示されていれば、長方形は200x200の黒い正方形として描画されます。

なぜこのコードは長方形を描画しないのですか?

これが描かれない主な理由は次のとおりです。

  • front_canvasは表示されません
  • front_canvasはビジュアルツリーに含まれておらず、正しく表示されています
  • 他のFrameworkElementは、少なくとも左上隅のfront_canvasを覆い隠しています。
  • キャンバスには、zオーダーの高い別のオブジェクトがあります。

指定したStrokeThicknessを表示したい場合は、通常 Stroke を設定することにも注意してください。

9
Reed Copsey

長方形を表示するには、StrokeThicknessを指定し、ゼロより大きいInteger値を設定する必要があります。

rect.StrokeThickness=2;
2
SHEKHAR SHETE