Dynamically adding and loading image from Resource

2019-04-22 04:16发布

问题:

I have some images added to my solution, right now it is under the folder images\flowers\rose.png inside the solution explorer. I want a way to dynamically load this image to my image control.

My current approach is making the type 'content' and use 'copy always' properties. Then i would give relative path to the image like below.

Image2.Source = new BitmapImage(new Uri("/images/flowers/Customswipe_b.png", UriKind.Relative));

Is there any way to make it load from the resource without copying it to the target system.

回答1:

The following works just fine for me:

image.Source = new BitmapImage(new Uri("pack://application:,,,/YourAssemblyName;component/Resources/someimage.png", UriKind.Absolute));

Also you should change the Build Action of your image from None to Resource.



回答2:

You can open the Resource Editor (Solution Explorer, click on Resources.resx) and add the image there. Then you can simply access it as Bitmap with Properties.Resources.ImageId

http://msdn.microsoft.com/en-us/library/3bka19x4(v=vs.100).aspx



回答3:

You use this :

 Image2.Source = new Bitmap(
      System.Reflection.Assembly.GetEntryAssembly().
        GetManifestResourceStream("MyProject.Resources.myimage.png"));

Or

Image2.Source = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);

I do recommend the second one.



回答4:

I had some problems to find the exact syntax for the URI, so see below more details :

If your image (myImage.png) is located in a subfolder "images" (from the root directory) , the exact syntax is :

image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/myImage.png", UriKind.Absolute));

If your image is in the subfolder images/icon/ (from the root directory) , the syntax is :

image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/icon/myImage.png", UriKind.Absolute));
  • Note that the part "pack://application:,,, does not change.
  • Be sure to set the "Build action" to "Resources"

For more information: see here.



回答5:

The way you are adding image and then changing its "Build action" to "Resources" will also do the job, But as you have asked for adding and loading from Resources wold be a different approach to achieve the same task. I would liketo provide you a link to read certain msdn articles.

Adding and Editing Resources (Visual C#)