2012-03-26 21 views
0

試圖將一堆圖像加載到目錄中的列表中...我的代碼如下。如何填充目錄中的圖像列表?

 string directory = @".\card_images\"; 
     List<Image> HandCards = new List<Image>(); 
foreach (string myFile in 
     Directory.GetFiles(directory,"*.png",SearchOption.AllDirectories)) 
     { 
      HandCards.Add(myFile); 
     } 

這當然不行,因爲不能將字符串轉換爲圖像,在另一方面,如果我試圖讓MYFILE成圖像,然後Directory.GetFiles也不管用,任何幫助將不勝感激。 謝謝!

回答

1
string directory = @".\card_images\"; 
List<Image> HandCards = new List<Image>(); 
foreach (string myFile in 
      Directory.GetFiles(directory, "*.png", SearchOption.AllDirectories)) 
{ 
    Image image = new Image(); 
    BitmapImage source = new BitmapImage(); 
    source.BeginInit(); 
    source.UriSource = new Uri(myFile, UriKind.Relative); 
    source.EndInit(); 
    image.Source = source; 

    HandCards.Add(image); 
} 
+0

謝謝!工作很好。 – 2012-03-26 04:41:33

+0

有辦法在Mac上使用Xamarin做同樣的事情嗎? – 2018-02-15 20:06:42

0

嘗試使用Image.FromFile

如:

string directory = @".\card_images\"; 
List<Image> HandCards = new List<Image>(); 
foreach (string myFile in Directory.GetFiles(directory,"*.png",SearchOption.AllDirectories)) 
{ 
    HandCards.Add(Image.FromFile(myFile)); 
} 
5

一個可愛的一個班輪:

var handCards = Directory.GetFiles(directory, "*.png", 
            SearchOption.AllDirectories) 
         .Select(Image.FromFile).ToList(); 
+0

非常好的解決方案!我會嘗試這一個,如果我遇到以前的答案:)。 – 2012-03-26 19:19:45

+1

它基本上做同樣的事情,除了他初始化一個圖像,然後用該文件填充它,而不是用該文件初始化它。 – SimpleVar 2012-03-26 22:04:38

0

你只需要bind(閱讀)的HandCards收集和使用ItemTemplatetemplate字符串到Image

例如

<ItemsControl ItemsSource="{Binding HandCards}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Image Source="{Binding}"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl>