可以';I don’我搞不清楚阶级出了什么问题;InitializationException”;

本文关键字:什么 问题 InitializationException 搞不清楚 don 可以 | 更新日期: 2023-09-27 18:24:55

"Game.exe中发生类型为"System.TypeInitializationException"的未处理异常"是我尝试运行程序时收到的错误。它说它构建时有0个错误,但它不会启动,当我在调试中运行它时,我会收到这样的消息。

我认为这与这个类有关:

class Sprites
{
    private static Bitmap sheet;
    private const int TILE_SIZE = 32;
    public static Bitmap loadSprite(string file)
    {
        Bitmap sprite;
        sprite = new Bitmap("Content/Sprites/" + file);
        return sprite;
    }
    public static Bitmap getSprite(int x, int y)
    {
        if (sheet == null)
            sheet = loadSprite("char.png");
        Rectangle crop = new Rectangle(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
        System.Drawing.Imaging.PixelFormat format = sheet.PixelFormat;
        return sheet.Clone(crop, format);
    }
}

这似乎是当它里面的方法被调用时,因为当我在不调用这个类中任何东西的情况下运行时,它是可以的。我的主窗体中没有其他东西,因为我刚刚开始这样做。

现在我尝试使用位图文件,但效果不佳。它在program.cs"Application.Run(new Form1());"中的初始化行出错。它没有告诉我更多。我发布了我的课程,因为它在我不使用的时候运行。

内部form1.cs

static Bitmap[] walkForward = { Sprites.getSprite(2, 0), Sprites.getSprite(2, 1), Sprites.getSprite(2, 2) };
    Animation walking = new Animation(walkForward, 10);
    public Form1()
    {
        InitializeComponent();
    }

完整错误输出到文本文件:

System.TypeInitializationException:"Game.Form1"的类型初始值设定项引发异常。--->System.ArgumentException:参数无效。位于System.Drawing.Bitmap.ctor(字符串文件名)在c:''Users''tiern''Documents''Visual Studio 2013''Projects''MoveSpites''Game''Sprites.cs:line 19中的Game.Sprites.loadSprite(字符串文件)在Game.Sprites.getSprite(Int32 x,Int32 y)中,位于c:''Users''tiern''Documents''Visual Studio 2013''Projects''MoveSpites''Game''Sprites.cs:line 27位于c:''Users''tiern''Documents''Visual Studio 2013''Projects''MoveSpites''Game''Form1.cs:line 15中的Game.Form1.cctor()---内部异常堆栈跟踪结束---在Game.Form1..ctor()位于c:''Users''tiern''Documents''Visual Studio 2013''Projects''MoveSpites''Game''Program.cs:line 21 中的Game.Program.Main()

System.ArgumentException:参数无效。位于System.Drawing.Bitmap.ctor(字符串文件名)位于c:''Users''tiern''Documents''Visual Studio 2013''Projects''MoveSpites''Game''Sprites.cs:line 19中的Game.Sprites.loadSprite(字符串文件)在Game.Sprites.getSprite(Int32 x,Int32 y)中,位于c:''Users''tiern''Documents''Visual Studio 2013''Projects''MoveSpites''Game''Sprites.cs:line 27位于c:''Users''tiern''Documents''Visual Studio 2013''Projects''MoveSpites''Game''Form1.cs:line 15 中的Game.Form1.cctor()

可以';I don’我搞不清楚阶级出了什么问题;InitializationException”;

发现它在磁盘上找不到文件。它从bin文件夹中读取,而不是从项目的根目录中读取。