web-dev-qa-db-fra.com

Comment dessiner un rectangle sur un canevas WPF

J'essaie de dessiner un Rectangle sur un Canvas comme suit:

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);

Pourquoi ce code ne dessinerait-il pas un rectangle?

Le canevas est défini dans le XAML associé comme suit:

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

La toile se montre bien. Je peux le dire à cause de l'écart qu'il laisse dans la grille de mise en page.

15
Sheena

Cela devrait dessiner votre rectangle comme un carré noir de 200x200, à condition que front_canvas s'affiche correctement.

Pourquoi ce code ne dessinerait-il pas un rectangle?

Les principales raisons pour lesquelles cela ne serait pas tiré sont:

  • front_canvas n'est pas visible
  • front_canvas n'est pas dans l'arborescence visuelle et s'affiche correctement
  • Un autre FrameworkElement obscurcit front_canvas, au moins dans le coin supérieur gauche.
  • Il y a un autre objet dans le canevas à un ordre z supérieur.

Notez que vous souhaitez généralement également définir StrokeThickness si vous souhaitez voir le Stroke que vous spécifiez.

9
Reed Copsey

Pour afficher le rectangle, vous devez spécifier StrokeThickness et définir une valeur Integer supérieure à zéro:

rect.StrokeThickness=2;
2
SHEKHAR SHETE