像是如果要顯示出一排一樣的圖片像這樣:
在xmal裡面最直接的寫法就是像這樣寫一堆一樣的程式碼:
<Grid>
<Canvas x:Name="CanvasWindow" Height="400" VerticalAlignment="Top" HorizontalAlignment="Left" Width="500" >
<Image x:Name="img01" Canvas.Left="0" Height="100" Width="100" Source="Image/mouse.png" Stretch="Fill" Visibility="Visible" Canvas.Top="0"/>
<Image x:Name="img02" Canvas.Left="100" Height="100" Width="100" Source="Image/mouse.png" Stretch="Fill" Visibility="Visible" Canvas.Top="0"/>
<Image x:Name="img03" Canvas.Left="200" Height="100" Width="100" Source="Image/mouse.png" Stretch="Fill" Visibility="Visible" Canvas.Top="0"/>
<Image x:Name="img04" Canvas.Left="0" Height="100" Width="100" Source="Image/mouse.png" Stretch="Fill" Visibility="Visible" Canvas.Top="100"/>
<Image x:Name="img05" Canvas.Left="100" Height="100" Width="100" Source="Image/mouse.png" Stretch="Fill" Visibility="Visible" Canvas.Top="100"/>
<Image x:Name="img06" Canvas.Left="200" Height="100" Width="100" Source="Image/mouse.png" Stretch="Fill" Visibility="Visible" Canvas.Top="100"/>
</Canvas>
</Grid>
但是如果不想把程式碼都寫在xmal裡面的話,也可以在cs檔裡面用array程式碼搞定:
private Image[] images;
public MainWindow()
{
InitializeComponent();
images = new Image[6];
for (int i = 0; i < images.Length; i++)
{
images[i] = new Image();
images[i].Source = new BitmapImage(new Uri(@"Image/mouse.png", UriKind.Relative));
images[i].Width = 100;
images[i].Height = 100;
images[i].Stretch = Stretch.Fill;
images[i].Visibility = Visibility.Visible;
CanvasWindow.Children.Add(images[i]);
Canvas.SetLeft(images[i], (100 * i));
Canvas.SetTop(images[i], 0);
}
}
如果要畫二維陣列的圖像這樣:
cs程式碼可以這樣寫:
static int array_x = 3, array_y = 2;
private Image[,] images;
public MainWindow()
{
InitializeComponent();
images = new Image[array_y,array_x];
for (int j = 0; j < array_y; j++)
{
for (int i = 0; i < array_x; i++)
{
images[j,i] = new Image();
images[j,i].Source = new BitmapImage(new Uri(@"Image/mouse.png", UriKind.Relative));
images[j,i].Width = 100;
images[j,i].Height = 100;
images[j,i].Stretch = Stretch.Fill;
images[j,i].Visibility = Visibility.Visible;
CanvasWindow.Children.Add(images[j,i]);
Canvas.SetLeft(images[j, i], (100 * i));
Canvas.SetTop(images[j, i], (100 * j));
}
}
}
像這樣如果有大量一樣的物件要畫,可以根據App的UI架構參考看看要用哪一種寫法比較好控制整體。
End


沒有留言:
張貼留言