3

我正在处理 C# 项目,我需要使用相对路径从图像目录中获取图像。我试过了

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

但是这些没有运气......我已经在程序运行时将图像复制到输出目录,但它没有拾取这些图像。

4

4 回答 4

9

如果您在 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)

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

于 2013-03-29T06:02:30.697 回答
1

我会确保图像目录位于输出文件夹中。我通常Assembly.GetExecutingAssembly().Location用来获取我的 dll 的位置。

但是,对于图像,我通常使用项目属性页面中的资源页面/集合。是有关它的更多信息。将图像放入项目的资源中会自动为您提供访问它的简单方法。

有关 GetExecutingAssembly 的更多信息:MSDN 页面

于 2013-03-29T03:50:57.753 回答
0

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

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

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

PS。我的 IDE 是繁体。中文所以我不能保证你的语言中的关键字是正确的。

于 2013-03-29T03:28:37.187 回答
-3

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

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;

}
于 2013-03-29T03:54:36.113 回答