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 withou开发者_运维百科t adding the image into resources? Thanks
I once wondered about this too, so I figured it out and put it in a blog post. For your example, it should 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 of the image when done so you don't get any leakage :)
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.
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)
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.
I used something like this.. got it in a YouTube tutorial video.
return new BitmapImage(new Uri($"pack://application:,,,/Images/imageFile.png"));
精彩评论