像是如果要顯示出一排一樣的圖片像這樣:
在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
沒有留言:
張貼留言