0

現在、ゲームエンジンを作成しており、ライブラリを参照するクライアントアセンブリのリソースから画像を読み込む必要があります。私はこのコードを使用しています。

public static Image LoadImageFromResource(string name){
    string asmname = Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location).Replace('\\', '.').Replace('/', '.');
    MessageBox.Show(asmname);
    MessageBox.Show(asmname + "." + name.Replace('\\', '.').Replace('/', '.'));
/*164*/  return (Image)new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream(asmname + "." + name.Replace('\\', '.').Replace('/', '.')));
}

そして、私はこれをクライアントテストから呼んでいますGECS_TEST.exe

/*11*/ Image img = Game.LoadImageFromResource("mario_left.png");

これらはの出力ですMessageBox

GECS_TEST

GECS_TEST.mario_left.png

そして、私はこの例外を取得しています

System.ArgumentException: Value of 'null' is not valid for 'stream'.
   at System.Drawing.Bitmap..ctor(Stream stream)
   at GECS.Core.Game.LoadImageFromResource(String name) in C:\..\Game.cs:line 164
   at GECS_TEST.Test.Main(String[] args) in c:\..\Test.cs:line 11

ありがとう

4

1 に答える 1

0

Assembly.GetEntryAssembly()の代わりにAssembly.GetCallingAssembly( )を使用します。

于 2013-01-18T11:57:26.153 に答える