Dynamically adding and loading image from Resources in C#

52,964

Solution 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.

Solution 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

Solution 3

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.

Share:
52,964
logeeks
Author by

logeeks

Updated on January 06, 2020

Comments

  • logeeks
    logeeks over 4 years

    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.