在C#中动态添加和加载Resources中的图像

时间:2012-10-18 12:11:57

标签: c# wpf image resources

我的解决方案中添加了一些图像,现在它位于解决方案资源管理器中的images \ flowers \ rose.png文件夹下。我想要一种方法将此图像动态加载到我的图像控件。

我目前的做法是制作“内容”类型并使用“始终复制”属性。然后我会给出如下图像的相对路径。

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

有没有办法让它从资源加载而不将其复制到目标系统。

5 个答案:

答案 0 :(得分:14)

以下对我来说很合适:

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

此外,您应该将图片的Build ActionNone更改为Resource

答案 1 :(得分:6)

您可以打开资源编辑器(解决方案资源管理器,单击Resources.resx)并在其中添加图像。然后,您只需使用Bitmap

将其作为Properties.Resources.ImageId进行访问即可

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

答案 2 :(得分:2)

你用这个:

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

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

我推荐第二个。

答案 3 :(得分:1)

我遇到了一些问题,无法找到URI的确切语法,因此请参阅以下详细信息:

如果您的图片(myImage.png)位于子文件夹“images”(来自根目录),则确切的语法为:

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

如果您的图片位于子文件夹images/icon/(来自根目录),则语法为:

image.Source = new BitmapImage(new Uri(@"pack://application:,,,/images/icon/myImage.png", UriKind.Absolute));
  • 请注意,"pack://application:,,,部分不会更改。
  • 务必将“构建操作”设置为“资源”

有关详细信息:see here

答案 4 :(得分:0)

您添加图像然后将其“构建操作”更改为“资源”的方式也可以完成这项工作,但是当您要求从资源添加和加载时,可以采用不同的方法来实现相同的任务。  我愿意为您提供阅读某些msdn文章的链接。

Adding and Editing Resources (Visual C#)