2013-04-04 2 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

ответ

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

+1

И знаете ли вы, что у BitmapImage есть [конструктор с параметром Uri] (http://msdn.microsoft.com/en-us/library/ms602473.aspx)? Это спасет вас все вещи BeginInit и EndInit. – Clemens

+0

А на самом деле? Я просто ушел с кода оригинального плаката. Я попробую уточнить. – AlexFoxGill

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++ 
    } 
Смежные вопросы