2013-02-08 18 views
12

Próbuję narysować Rectangle na zasadzie Canvas następująco:Jak narysować prostokąt na kanwie 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); 

Dlaczego nie ten kod narysuj prostokąt?

Płótno jest zdefiniowane w dołączonym XAML następująco:

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

Płótno pojawia się dobrze. Mogę powiedzieć ze względu na lukę, którą pozostawia w siatce układu.

+0

@ReedCopsey: Mogę powiedzieć to nie jest spłaszczony, ponieważ istnieje duża luka gdzie płótno powinno być i nic może to być spowodowane przez: – Sheena

Odpowiedz

8

Powinieneś narysować prostokąt jako czarny kwadrat o wymiarach 200x200, pod warunkiem, że front_canvas jest wyświetlany poprawnie.

Dlaczego ten kod nie narysowałby prostokąta?

Główne powody to nie Narysowane:

  • front_canvas nie jest widoczny
  • front_canvas nie jest w drzewie wizualne i wyświetlane są poprawnie
  • niektórych innych FrameworkElement jest zasłaniając front_canvas, w najmniej lewy górny róg.
  • Istnieje inny obiekt w obszarze roboczym w wyższej kolejności z.

Pamiętaj, że zazwyczaj chcesz ustawić StrokeThickness, jeśli chcesz zobaczyć podany Stroke.

1

Aby rzucie prostokąta należy określić StrokeThickness i ustawić dowolną wartość większą niż zero Integer:

rect.StrokeThickness=2; 
+1

lub Wypełnienie/Tło, lub (...). Jest to jednak dobra wskazówka dla osób, które dopiero zaczynają rysować, ponieważ często zapominają, że biały kształt na białym tle nie jest widoczny pomimo prawidłowego narysowania/renderowania;) – quetzalcoatl

Powiązane problemy