views:

543

answers:

5

Hi, I would like to know following: I added the folder "Graphics" into my project and stuck a BMP in it. Now I would like to load the image from my code, but I cannot figure out how. I know its simple with resources but is there a way without adding the image into resources? Thanks

A: 

To get an resource:

myNamespace.Properties.Resources.images.<imagename>

You can cast that to the type you need (or use a function for example FromFile)

PoweRoy
A: 

You should specify on the file properties that it must be deployed when building the application :

Copy to Output Directory : Copy always

You can then access the file using the Image.FromFile method, the path will be the exact same one as in your project.

Thibault Falise
If you do this then it's not an embedded resource. You can have some serious problems if you don't handle missing files when users just copied the exe instead of the whole folder.
PoweRoy
A: 

I once wondered about this too, so I figured it out and put it in a blog post.

For your example, it would be something like this:

var a = Assembly.GetExecutingAssembly(); // Or another Get method if you need to get it from some other assembly

var image = Image
    .FromStream(a.GetManifestResourceStream("DefaultNameSpace.Graphics.image.bmp"));

Remember to mark the image as an Embedded Resource and to dispose it when done :)

Svish
Thanks. What if I leave "Content" as a Build action?And please - what namesapce Assembly belongs to? I am not able to call it.
Petr
DefaultNamespace is the namespace you have given in your project settings. It defaults to the name of your project. If you use the Content Build Action, I think the file will be copied to your output directory. If you do that you would have to use `Image.FromFile("pathtoimage.bmp")` or something like that.
Svish
Hmm..I have tried to type Assembly. but nothing appeared.
Petr
You need to include the System.Reflection namespace I think: `using System.Reflection;`
Svish
A: 

You can load an image directly from the filesystem

Image img = Image.FromFile( "\Graphics\ImageName.bmp" );

The MSDN documentation is here

http://msdn.microsoft.com/en-us/library/system.drawing.image.fromfile.aspx

Obviously you would need to know the directory and name you are loading from.

Justin