When I try to add a resource at the resource designer by clicking \"Add an existing item\",the item is placed in the folder \"Resource\".
The problem is that if I create
You do not need to add the images under the Resources folder. You can add the images to any folder you wish, and then set the build action for the images to "Embedded Resource". That way they will be compiled into the assembly as resources. I don't know if there are performance issues coming into play when it is a large number of images though...
Update: more in detail:
This will cause the image files to be compiled into the assembly as resources. Each file will be assigned a resource name following this pattern: <root namespace for the assembly>.<folder name>.<image file name>
. You can load an image using this code:
using(Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("<root namespace for the assembly>.<folder name>.<image file name>"))
{
pictureBox1.Image = Image.FromStream(stream);
}
Create a new resource file (in following example I called it Images01 in folder resx) Create a custom resource manager class and initialize it to to point to this file just created
ResourceManager rm = new ResourceManager("ROOTNAMESPACE.resx.Images01",
System.Reflection.Assembly.GetExecutingAssembly());
Implement the method to GetImage
public static Image GetImage(string fileName)
{
Stream stream = GetResourceStream(fileName);
Image image = null;
if (stream != null)
{
image = Image.FromStream(stream);
}
return image;
}
Add images to this resx file
And then you can use it in your code as follows
this.picProject.Image = Resources.GetImage("ImageName.png");
Hope it helps