-2

可能重复:
从 WPF 应用程序获取应用程序的目录

我想在不使用“C:\ Path”的情况下从项目目录中访问文件,就像在java中一样,因为它会在我的图片框中创建文件异常这是我的计时器中的代码

if (imagecount == 30)
{
    this.pictureBox1.Image = System.Drawing.Image.FromFile(@"C:\Users\Baloi\Documents\visual studio 2010\Projects\WinEX\WinEX\" + image() + ".jpg");
    imagecount = 0;
}

else if (imagecount < 30)
    imagecount++;
4

3 回答 3

2

应用目录

string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

可执行目录

string executableDirectory = Path.GetDirectoryName(Application.ExecutablePath);

根据您的要求,您可以将上述之一与Path.Combine 结合使用并构建图像位置的完整路径。

或者,您可以将图像嵌入资源文件中。然后您可以将它们加载为

Stream imgStream = 
    Assembly.GetExecutingAssembly().GetManifestResourceStream(
    "YourNamespace.resources.ImageName.bmp");
pictureBox.Image = new Bitmap(imgStream);
于 2012-06-03T18:17:43.463 回答
0

您可以使用以下代码:

this.pictureBox1.Image = System.Drawing.Image.FromFile(image() + ".jpg");

您的文件应与程序位于同一文件夹中。

于 2012-06-03T18:36:10.713 回答
0

你有几个选择:

  1. 在项目中嵌入图片(将编译操作设置为 Embedded Data)

  2. 使用相对路径引用您的图片。由于在调试时二进制程序集位于 bin\Debug 文件夹中,这稍微复杂了一点。

对于选项 1:

System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = 
    thisExe.GetManifestResourceStream("AssemblyName.ImageFile.jpg");
this.pictureBox1.Image = Image.FromStream(file);

http://msdn.microsoft.com/en-us/library/aa287676(v=vs.71).aspx

对于选项 2:

string appPath = Path.GetDirectoryName(Application.ExecutablePath);
if (System.Diagnostics.Debugger.IsAttached)
{
    contentDirectory = Path.Combine(appPath + @"\..\..\content");
}
else
{   
    contentDirectory = Path.Combine(appPath, @"content");
}
于 2012-06-03T18:41:57.587 回答