【问题标题】:Image Array: Out of range exception图像数组:超出范围异常
【发布时间】:2016-04-14 13:26:56
【问题描述】:

我正在C# 中制作一个小游戏,我正在尝试将图像加载到array,但它一直说索引超出范围

这是给我一个错误的部分:

Image[] Map = new Image[10];
Image map1 = Image.FromFile("_Maps_\\map1.png");
Map[1] = map1;
Image map2 = Image.FromFile("_Maps_\\map2.png");
Map[1] = map2;
Image map3 = Image.FromFile("_Maps_\\map3.png");
Map[1] = map3;
Image map4 = Image.FromFile("_Maps_\\map4.png");
Map[1] = map4;
Image map5 = Image.FromFile("_Maps_\\map5.png");
Map[1] = map5;
Image map6 = Image.FromFile("_Maps_\\map6.png");
Map[1] = map6;
Image map7 = Image.FromFile("_Maps_\\map7.png");
Map[1] = map7;
Image map8 = Image.FromFile("_Maps_\\map8.png");
Map[1] = map8;
Image map9 = Image.FromFile("_Maps_\\map9.png");
Map[1] = map9;
Image map10 = Image.FromFile("_Maps_\\map10.png");
Map[1] = map10;

我对@9​​87654324@中的数组有点陌生

如果您需要更多代码,请询问

【问题讨论】:

  • 这不可能是给出错误的实际代码。您将所有图像放在数组中的同一项目中,因此您最终得到一个包含最后一张图像和 9 个空引用的数组,但没有错误。
  • 噢,抱歉,耽误了您的时间。我没注意到

标签: c# .net arrays image exception


【解决方案1】:

有一种使用 LINQ 加载这些图像的简单方法,见下文:

Image[] Map = Directory.GetFiles("_Maps_", "*.png")
                       .Select(file => Image.FromFile(file))
                       .ToArray();

使用这种方式你不会关心地图的名称,如果你添加一个新的地图,它会从这个代码中获取。

你可以稍微简化一下这段代码

Image[] Map = Directory.GetFiles("_Maps_", "*.png")
                       .Select(Image.FromFile)
                       .ToArray();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多