将图像列表转换为图像数组

时间:2013-03-14 21:45:05

标签: c# arrays image list

看了几个例子,按照示例我的代码现在看起来像这样(见下文),但不幸的是我收到了错误 “'System.Windows.Forms.ImageList'不包含'toArray'的定义,并且没有扩展方法'toArray'接受类型为'System.Windows.Forms.ImageList'的第一个参数'(你是否错过了使用指令或汇编参考?)“

有什么想法吗?我可能错过了其他帖子中显示的部分,但我不这么认为

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();

2 个答案:

答案 0 :(得分:3)

Move_list.Images是您的列表,而不是ImageList。它是一个命名很差的类,但它在Win32中映射了ImageList概念(它是一个长序列图像位图的句柄)。无论如何:

Move_list.Images.Cast<Image>().ToArray();

答案 1 :(得分:0)

根据我收集的内容,Move_listImageListImageList未实施IQueryableIEnumerableToArraySystem.Linq中定义为Move_list.Images.ToArray()作为这两个接口的扩展方法。

您应该可以使用ImageCollection,因为图片是IEnumerable,可以实现{{1}}。