2013-02-08 8 views
12

Je suis en train de dessiner un Rectangle sur Canvas comme suit:Comment dessiner un rectangle sur une toile 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); 

Pourquoi est-ce que ce code ne dessiner un rectangle?

La toile est définie dans le XAML associé comme suit:

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

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

+0

@ReedCopsey: Je peux dire que ce n'est pas ratatinée parce qu'il ya un grand écart où la toile devrait être et rien d'autre pourrait le provoquer – Sheena

Répondre

8

Ceci devrait dessiner votre rectangle comme un carré noir de 200x200, à condition que front_canvas s'affiche correctement. Pourquoi ce code ne dessine-t-il pas un rectangle?

Pourquoi ce code ne dessine-t-il pas un rectangle?

Les principales raisons pour lesquelles ce ne tirerai pas sont:

  • front_canvas n'est pas visible
  • front_canvas est pas dans l'arborescence visuelle et d'être affiché correctement
  • Une autre FrameworkElement obscurcit front_canvas, à moins le coin supérieur gauche.
  • Il y a un autre objet dans le canevas à un ordre z plus élevé.

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

1

Pour Voir Rectangle vous devez spécifier le StrokeThickness et définissez la valeur Integer supérieure à zéro:

rect.StrokeThickness=2; 
+1

ou un Fill/Background, ou (...). Mais c'est toujours un bon indice pour les débutants, car ils oublient souvent que la forme blanche sur un fond blanc n'est pas visible malgré le fait d'être dessiné/rendu correctement;) – quetzalcoatl

Questions connexes