当我尝试通过单击“添加现有项目”在资源设计器中添加资源时,该项目将放在“资源”文件夹中。
问题是,如果我在Resource目录中创建一个新目录并将资源放在那里,我会收到一个编译错误,指出找不到这些文件。
我无法将所有资源放在一个文件夹中,因为我必须添加2500个图像,其中一些与其名称相匹配。
答案 0 :(得分:9)
您无需在Resources文件夹下添加图像。您可以将图像添加到任何所需的文件夹,然后将图像的构建操作设置为“嵌入式资源”。这样,它们将作为资源编译到程序集中。我不知道是否存在性能问题,但是当它是大量的图像时......
更新:更详细:
这将导致图像文件作为资源编译到程序集中。将为每个文件分配一个遵循此模式的资源名称:<root namespace for the assembly>.<folder name>.<image file name>
。您可以使用以下代码加载图像:
using(Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("<root namespace for the assembly>.<folder name>.<image file name>"))
{
pictureBox1.Image = Image.FromStream(stream);
}
答案 1 :(得分:2)
创建一个新的资源文件(在下面的示例中,我将其称为文件夹resx中的Images01) 创建自定义资源管理器类并将其初始化为指向刚创建的此文件
ResourceManager rm = new ResourceManager("ROOTNAMESPACE.resx.Images01",
System.Reflection.Assembly.GetExecutingAssembly());
将方法实现为GetImage
public static Image GetImage(string fileName)
{
Stream stream = GetResourceStream(fileName);
Image image = null;
if (stream != null)
{
image = Image.FromStream(stream);
}
return image;
}
将图像添加到此resx文件
然后您可以在代码中使用它,如下所示
this.picProject.Image = Resources.GetImage("ImageName.png");
希望有所帮助