we take a List of custom objects (called Rects) and render them onto a Canvas. Each object specifies its dimensions, its color, and its position relative to the Canvas top and left.
<Window x:Class=
"WpfApplication27.MainWindow"
xmlns=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=
"http://schemas.microsoft.com/winfx/2006/xaml"
Title=
"MainWindow" Height=
"350" Width=
"525"
Loaded=
"Window_Loaded">
<Grid>
<Canvas HorizontalAlignment=
"Left" Height=
"319" Margin=
"0"
VerticalAlignment=
"Top" Width=
"517"
Name=
"Can1"/>
</Grid>
</Window>
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Shapes;
namespace WpfApplication27
{
class Rect
{
public int Width { get; set; }
public int Height { get; set; }
public int Left { get; set; }
public int Top { get; set; }
public SolidColorBrush Color { get; set; }
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// ... Create list of our Rect objects.
List<Rect> rects = new List<Rect>();
// ... Add Rect objects.
rects.Add(new Rect()
{
Width = 100,
Height = 100,
Left = 0,
Top = 0,
Color = Brushes.Aquamarine
});
rects.Add(new Rect()
{
Width = 50,
Height = 50,
Left = 100,
Top = 100,
Color = Brushes.Cornsilk
});
rects.Add(new Rect()
{
Width = 25,
Height = 25,
Left = 150,
Top = 150,
Color = Brushes.Peru
});
foreach (Rect rect in rects)
{
// ... Create Rectangle object.
Rectangle r = new Rectangle();
r.Width = rect.Width;
r.Height = rect.Height;
r.Fill = rect.Color;
// ... Set canvas position based on Rect object.
Canvas.SetLeft(r, rect.Left);
Canvas.SetTop(r, rect.Top);
// ... Add to canvas.
Can1.Children.Add(r);
}
}
}
}