Есть ли конкретная причина, по которой вы неравнодушны к Canvas?
Вы можете просто поместить изображения непосредственно в сетку с помощью Stretch = "Uniform", например, так:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
...
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
...
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Image Grid.Column="0" Grid.Row="0" Source="/WpfApplication1;component/bitmap20.bmp" Stretch="Uniform"></Image>
<Image Grid.Column="0" Grid.Row="1" Source="/WpfApplication1;component/bitmap21.bmp" Stretch="Uniform"></Image>
<Image Grid.Column="1" Grid.Row="0" Source="/WpfApplication1;component/bitmap22.bmp" Stretch="Uniform"></Image>
...
...
</Grid>
и поскольку Grid автоматически растягивается до размера своего контейнера, ваши изображения будут автоматически увеличиваться / уменьшаться в макете.