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

log*_*eks 9 c# wpf resources image

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

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

Image2.Source = new BitmapImage(new Uri("/images/flowers/Customswipe_b.png", UriKind.Relative));
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*ric 16

以下工作对我来说很好:

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

您还应该Build Action将图像更改NoneResource.


MrD*_*osu 6

您可以打开资源编辑器(解决方案资源管理器,单击Resources.resx)并在其中添加图像.然后,你可以简单地访问它BitmapProperties.Resources.ImageId

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


Mal*_*ick 5

我在查找 URI 的确切语法时遇到了一些问题,因此请参阅下面的更多详细信息:

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

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

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

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

有关更多信息:请参阅此处