我试图获取我在Visual Studio中的解决方案资源管理器中添加的图像文件的路径,但我无法获得该图像的相对路径.H是我项目的文件结构:
/BulutDepoProject
/FolderIcon
Folder.ico
Main.cs
我可以得到这样的图像:
"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico"
Run Code Online (Sandbox Code Playgroud)
但我应该能够得到类似的东西:
"~\\FolderIcon\\Folder.ico"
Run Code Online (Sandbox Code Playgroud)
我想我不知道它的确切语法所以我不能获取图像.:(
Tol*_*men 50
如果您想使用任何类型的外部文件,肯定有一种方法可以将它们放在项目中的文件夹中,但不如从资源中获取它们那样有效.在常规的Visual Studio项目中,您应该Resources.resx在该Properties部分下有一个文件,否则,您可以轻松添加自己的Resource.resx文件.并在其中添加任何类型的文件,您可以在此处完成向项目添加资源文件的演练.
在项目中拥有资源文件后,调用它们很容易,因为:
var myIcon = Resources.MyIconFile;
Run Code Online (Sandbox Code Playgroud)
当然你应该添加如下using Properties语句:
using <namespace>.Properties;
Run Code Online (Sandbox Code Playgroud)
Ada*_*lus 32
我有点晚了,我不确定这是不是你想要的,但我想我会添加它以防万一其他人发现它有用.
假设这是您的文件结构:
/BulutDepoProject
/bin
Main.exe
/FolderIcon
Folder.ico
Main.cs
Run Code Online (Sandbox Code Playgroud)
您需要编写相对于Main.exe文件的路径.所以,你要访问Folder.ico,在Main.cs你可以使用:
String path = "..\\FolderIcon\\Folder.ico"
Run Code Online (Sandbox Code Playgroud)
这似乎对我有用!
3Da*_*ave 20
省略"〜\":
var path = @"FolderIcon\Folder.ico";
Run Code Online (Sandbox Code Playgroud)
~\在文件系统方面没有任何意义.我见过的唯一正确使用的地方是在一个Web应用程序中,ASP.NET用代替应用程序根目录的绝对路径替换代字号.
您通常可以假设路径相对于EXE所在的文件夹.此外,请确保在Visual Studio的属性选项卡中将图像指定为"content"和"copy if newer"/"always always".
小智 14
我也遇到了同样的问题,我能够完成它.那么让我解释一下我应用的步骤.我将根据你的情况解释一下.
根据我的方法,我们需要使用'Path'类和'Assembly'类来获取相对路径.
所以首先在using语句中导入System.IO和System.Reflection.
然后键入下面给出的代码行.
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);
Run Code Online (Sandbox Code Playgroud)
实际上,上面给定的行存储了项目输出目录的路径.(这里'output'目录指的是项目的Debug文件夹).
现在将FolderIcon目录复制到Debug文件夹中.然后键入下面给出的Line.
var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");
Run Code Online (Sandbox Code Playgroud)
现在这个'iconPath'变量包含Folder.ico的整个路径.您所要做的就是将其存储在字符串变量中.使用下面的代码行.
string icon_path = new Uri(iconPath ).LocalPath;
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用此icon_path字符串变量作为图标的相对路径.
谢谢.
我认为使用这个将是最简单的
new Uri("pack://application:,,/FolderIcon/" + youImageICO);
Run Code Online (Sandbox Code Playgroud)
或者此代码将在任何机器上运行,如果您的文件夹位于根项目中,如果您想更改它...只需更改此部分@“..\”
public static string bingPathToAppDir(string localPath)
{
string currentDir = Environment.CurrentDirectory;
DirectoryInfo directory = new DirectoryInfo(
Path.GetFullPath(Path.Combine(currentDir, @"..\..\" + localPath)));
return directory.ToString();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
在 Visual Studio 中,请单击“解决方案资源管理器”窗格中的“Folder.ico”文件。然后您将看到“属性”窗格。将“复制到输出目录”行为更改为“如果更新则复制”。这将使 Visual Studio 将文件复制到输出 bin 目录。
现在要使用相对路径获取文件路径,只需键入:
string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";
Run Code Online (Sandbox Code Playgroud)
希望有所帮助。
| 归档时间: |
|
| 查看次数: |
223726 次 |
| 最近记录: |