c#位图只在指定静态文件地址时加载
本文关键字:静态 文件地址 加载 位图 | 更新日期: 2023-09-27 17:51:14
我试图创建一个方法,加载图像(png)并将其存储在位图变量中以供以后使用。代码如下:
private static Bitmap LoadImage(string subfolderName, string imageName) {
string fileSpec = string.Format(@".'Images'{0}'{1}.png", subfolderName, imageName);
Bitmap bitmap = new Bitmap(fileSpec);
return bitmap;
}
您可以看到它相当简单,我将文件路径存储在fileSpec中,然后将其用作创建新位图的参数。问题是,当我使用这是,我得到以下错误:
"Parameter is not Valid"
错误指向这一行:
Bitmap bitmap = new Bitmap(fileSpec);
我发现这个错误意味着当文件不存在时发生,但文件在那里,当我使用静态文件地址时,如:
private static Bitmap LoadImage(string subfolderName, string imageName) {
string st = @".'Images'Cards'CardBackRed.png"; //did this to test if it was working in any capacity at all
Bitmap bitmap = new Bitmap(st);
return bitmap;
}
我没有得到错误和图像加载良好。我错过了什么很明显的东西吗?如果你能帮忙,我将不胜感激。
谢谢!
如您所示,当硬编码文件夹和文件名时,错误就会消失。因此,传递给LoadImage
方法的subfolderName
和imageName
变量不包含您期望的值。
您可以通过在LoadImage
方法的开头设置一个断点来演示这一点,并在该点检查subfolderName
和imageName
变量的值。
当组合路径的多个部分时,使用. net提供的Path.Combine()
方法。可能 subfolderName中已经有一个反斜杠,并且您正在加倍它们。Path.Combine()
为您检查,所以它是安全的使用。我怀疑这就是这里正在发生的事情。
string.Format(@".'Images'{0}'{1}.png", subfolderName, imageName);
由于您使用的是相对路径,因此我不确定您必须提供什么才能使此工作。试试我下面做的…它应该从当前执行程序集的路径开始,其中应该等同于.
。
string fileSpec =
Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)),
"Images",
subfolderName,
imageName + ".png");
@Tetsuo_and_Youth,您设置错误的文件路径你说"调试器显示filespec的值为:filespec"F:'Users'MYUSERNAME'Documents'Gui Games with shared game class'Gui Games'bin'Debug'Cards'CardBackRed.png"string",这是正确的路径。
意味着相对路径应该是
string fileSpec = string.Format(@".'{0}'{1}.png", subfolderName, imageName);
下没有"Images"文件夹。/bin/debug/"文件夹
并且还暗示在您的帖子中,第二个fileSpec没有设置为您所说的正确路径。