无法弄清楚 class "InitializationException" 有什么问题
Can't figure out what is wrong with class "InitializationException"
"An unhandled exception of type 'System.TypeInitializationException' occurred in Game.exe" 是我在尝试 运行 我的程序时收到的错误。它说它构建时有 0 个错误,但它不会启动,当我 运行 它处于调试状态时,这是我收到的消息。
我认为这与此有关 class:
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);
}
}
好像是里面的方法被调用的时候因为我运行不调用这个class里面的任何东西就可以了。我的主表单中没有其他内容,因为我刚刚开始这个。
现在我尝试使用没有任何用处的位图文件。它在 program.cs "Application.Run(new Form1());" 中的初始化行上出错。它并没有告诉我更多。我发布了我的 class 因为它 运行 在我不使用它的时候。
里面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: The type initializer for 'Game.Form1' threw an exception. ---> System.ArgumentException: Parameter is not valid.
at System.Drawing.Bitmap..ctor(String filename)
at Game.Sprites.loadSprite(String file) in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Sprites.cs:line 19
at Game.Sprites.getSprite(Int32 x, Int32 y) in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Sprites.cs:line 27
at Game.Form1..cctor() in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Form1.cs:line 15
--- End of inner exception stack trace ---
at Game.Form1..ctor()
at Game.Program.Main() in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Program.cs:line 21
System.ArgumentException: Parameter is not valid.
at System.Drawing.Bitmap..ctor(String filename)
at Game.Sprites.loadSprite(String file) in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Sprites.cs:line 19
at Game.Sprites.getSprite(Int32 x, Int32 y) in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Sprites.cs:line 27
at Game.Form1..cctor() in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Form1.cs:line 15
原来在磁盘上找不到文件。它从 bin 文件夹而不是项目的根目录中读取。
"An unhandled exception of type 'System.TypeInitializationException' occurred in Game.exe" 是我在尝试 运行 我的程序时收到的错误。它说它构建时有 0 个错误,但它不会启动,当我 运行 它处于调试状态时,这是我收到的消息。
我认为这与此有关 class:
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);
}
}
好像是里面的方法被调用的时候因为我运行不调用这个class里面的任何东西就可以了。我的主表单中没有其他内容,因为我刚刚开始这个。
现在我尝试使用没有任何用处的位图文件。它在 program.cs "Application.Run(new Form1());" 中的初始化行上出错。它并没有告诉我更多。我发布了我的 class 因为它 运行 在我不使用它的时候。
里面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: The type initializer for 'Game.Form1' threw an exception. ---> System.ArgumentException: Parameter is not valid. at System.Drawing.Bitmap..ctor(String filename) at Game.Sprites.loadSprite(String file) in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Sprites.cs:line 19 at Game.Sprites.getSprite(Int32 x, Int32 y) in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Sprites.cs:line 27 at Game.Form1..cctor() in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Form1.cs:line 15 --- End of inner exception stack trace --- at Game.Form1..ctor() at Game.Program.Main() in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Program.cs:line 21
System.ArgumentException: Parameter is not valid. at System.Drawing.Bitmap..ctor(String filename) at Game.Sprites.loadSprite(String file) in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Sprites.cs:line 19 at Game.Sprites.getSprite(Int32 x, Int32 y) in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Sprites.cs:line 27 at Game.Form1..cctor() in c:\Users\tiern\Documents\Visual Studio 2013\Projects\MoveSpites\Game\Form1.cs:line 15
原来在磁盘上找不到文件。它从 bin 文件夹而不是项目的根目录中读取。