2013-04-04 101 views
0

如何将Array放入WPF控件的某些源文件中,称为Image? O这个论坛我发现,但如何使数组?WPF中的图像阵列

BitmapImage logo = new BitmapImage() 
logo.BeginInit(); 
logo.UriSource = new Uri("pack://application:,,,/img/3.jpg"); 
logo.EndInit(); 

tmpimage.Source = logo; 

但我需要sometring这样的:

Image[] img = new Image[3]; 
img[0].Source = new Uri("pack://application:,,,/img/3.jpg"); 
tmpimage.Source = img[0]; 
+0

你想做什么 - 显示图像列表? – NSGaga 2013-04-04 19:09:54

回答

2
Image[] images = new Image[3] { new Image(), new Image(), new Image() }; 
images[0].Source = new BitmapImage(new Uri("pack://application:,,,/img/3.jpg")); 
images[1].Source = new BitmapImage... // etc... 

或者,让你的形象工厂的功能和使用LINQ:

Image CreateBitmap(string uri) 
{ 
    return new Image() { Source = new BitmapImage(new Uri(uri)) }; 
} 

Image[] GetImages() 
{ 
    var imageUris = new[] 
    { 
     "pack://application:,,,/img/3.jpg", 
     "pack://application:,,,/img/elephant.jpg", 
     "pack://application:,,,/img/banana.jpg" 
    }; 
    return imageUris.Select(CreateBitmap).ToArray(); 
} 
+1

[Image](http://msdn.microsoft.com/en-us/library/system.windows.controls.image.aspx)不是[BitmapImage]的基类(http://msdn.microsoft.com /en-us/library/system.windows.media.imaging.bitmapimage.aspx)。我猜你用[ImageSource](http://msdn.microsoft.com/en-us/library/system.windows.media.imagesource.aspx)将其混淆。 – Clemens 2013-04-04 17:27:06

+1

你知道BitmapImage有一个[带有Uri参数的构造函数](http://msdn.microsoft.com/en-us/library/ms602473.aspx)?这将为您节省所有BeginInit和EndInit的内容。 – Clemens 2013-04-04 17:38:15

+0

真的吗?我刚刚离开了原来的海报代码。我会尽力澄清。 – AlexFoxGill 2013-04-05 08:01:00

1

的BitmapImage的动态数组:

BitmapImage[] iHab; 

    BitmapImage CreateBitmap(string uri) 
     { 
     return new BitmapImage(new Uri(uri)); 
     } 

    BitmapImage[] GetImages() 
     { 
     string currDir = Directory.GetCurrentDirectory(); 
     string[] imageUris; 

     //Get directory path of myData 
     string temp = currDir + "\\Media\\hcia\\"; 
     imageUris = Directory.GetFiles(temp, "habitation*.png"); 
     return imageUris.Select(CreateBitmap).ToArray(); 
     } 

    private void Rec_hab_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     iHab = GetImages(); 
     pointer.Source = iHab[7]; // the 7th image : can be manipulated with an i++ 
    }