2013-03-14 101 views
1

看了幾個例子,下面的例子我的代碼現在看起來像這樣(見下文),但不幸的是我得到錯誤 「'System.Windows.Forms.ImageList''not包含關於「指定者」的定義和沒有擴展方法「指定者」接受類型「System.Windows.Forms.ImageList」的第一個參數可以找到(是否缺少using指令或程序集引用?)」將圖像列表轉換爲圖像數組

有任何想法嗎 ?我可能已經錯過了其他職位所示的一部分,但我不這麼認爲

ImageList Move_list = new ImageList(); 
. 
. 
. 
//Gather the images 
string  path   = "C:/Pictures/Movements/User"; 
string[]  filter  = { ".jpg", ".jpeg"}; 
DirectoryInfo directoryInfo = new DirectoryInfo(path); 
FileInfo[] fileInfo  = directoryInfo.GetFiles(); 
ArrayList  arrayList  = new ArrayList(); 

foreach (FileInfo fi in fileInfo) 
    foreach (string s in filter) 
    if (s == fi.Extension) 
     arrayList.Add(fi.FullName); 

//adding files to image list: 
for (i = 0; i < arrayList.Count; i++) 
{ 
    System.Drawing.Image img = System.Drawing.Image.FromFile(arrayList[i].ToString()); 
    Move_list.Images.Add(img); 
} 

User_moves[0] = Move_list.toArray(); 
+1

請詳細說明。您還沒有告訴我們「Move_list」或「Move_list.Images」的數據類型,因此很難告訴您如何將其轉換爲數組。它*看起來像你的班級'Move_list'有某種'Images'集合。如果是'IEnumerable ',你可以簡單的說'Image [] x = Move_list.ToArray();' – 2013-03-14 21:56:21

+0

對不起,移動列表是:ImageList Move_list = new ImageList(); – H65 2013-03-14 22:03:18

回答

0

從我所收集,Move_listImageListImageList不執行IQueryableIEnumerableToArraySystem.Linq中定義爲這兩個接口上的擴展方法。

您應該能夠使用Move_list.Images.ToArray(),因爲圖像是ImageCollection,它確實實現IEnumerable

3

Move_list.Images是您的列表,而不是ImageList。這是一個嚴重命名的類,但它在Win32中映射了ImageList概念(這是一個處理順序圖像的長位圖)。無論如何:

+0

如果你不使用Cast,你會得到一個對象[]而不是Image []。 – cunningdave 2013-03-14 21:53:58

+0

沒有運氣,doin引發此錯誤:'System.Data.EnumerableRowCollectionExtensions.Cast (System.Data.EnumerableRowCollection)'是一個'方法',在給定的上下文中無效 – H65 2013-03-14 22:09:15

+0

我的不好,我忘了括號鑄造()調用。 – cunningdave 2013-03-15 14:37:38