如何在C#项目中设置图像文件夹的相对路径?

4

我正在进行C#项目,需要使用相对路径从Images目录获取图像。我已经尝试过

var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\Images\logo.png";
var logoImage = new LinkedResource(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)+@"\Images\logo.png")

但是这些都没有成功... 我已经将图像设置为在程序运行时复制到输出目录,但它并没有捕获这些图像。


你如何使用相对路径获取Images目录? - nzdev
4个回答

10
如果您在C#中使用LinkedResource(),很可能无法捕获相对URI或文件位置。
您可以使用一些额外的代码。
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
var logoimage = Path.Combine(outPutDirectory, "Images\\logo.png");
string relLogo = new Uri(logoimage).LocalPath;
var logoImage = new LinkedResource(relLogo)

现在它将获取您的相对路径,在内存中将其转换为绝对路径,并帮助您获取图像。

1

首先,将这些图像文件添加到您的项目中(创建一个图像文件夹是个好主意)。

其次,在解决方案管理器中选择图像,并查看属性窗口。

然后,将“复制到输出目录”更改为“始终”或“更新时复制”。

注:我的 IDE 是繁体中文,所以无法确保您语言中的正确关键词。


抱歉,我可能误解了你的问题。不过,你有检查过 pathlogoImage 的值吗?我猜可能是少了 "" 或者多了它。 - J.C

1
我会确保图像目录位于输出文件夹中。通常我使用 Assembly.GetExecutingAssembly().Location 获取我的dll的位置。
然而,对于图像,我通常使用项目属性页面中的资源页面/集合。这里是更多关于它的信息: 这里。将图像放在项目资源中会自动为您提供访问它的简单方法。
有关GetExecutingAssembly的更多信息:MSDN页面

-2

如果您想在应用程序中显示文件夹中的图像,请使用数组并将所有图片放入数组中。然后,您就可以前进和后退了。

string[] _PicList = null;

int current = 0;

_PicList = System.IO.Directory.GetFiles("C:\\Documents and Settings\\Hasanka\\
                                               Desktop\\deaktop21052012\\UPEKA","*.jpg"); 
// "*.jpg" will select all 

//pictures in your folder


String str= _PicList[current];

DisplayPicture(str);

private void DisplayPicture(string str)

{
    //throw new NotImplementedException();
    BitmapImage bi = new BitmapImage(new Uri(str));
    imagePicutre.Source = bi; // im using Image in WPF 
    //if u r using windows form application it must be a PictureBox i think.

    label1.Content = str;

}

2
我知道如何使用绝对路径,但我的情境需要使用相对路径。 - nzdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接