在C#中动态添加和加载Resources中的图像
我在我的解决方案中添加了一些图像,现在它位于解决方案资源管理器中的images \ flowers \ rose.png文件夹下。 我想要一种方法将此图像动态加载到我的图像控件。
我目前的方法是制作“内容”类型并使用“始终复制”属性。 然后我会给出如下图像的相对路径。
Image2.Source = new BitmapImage(new Uri("/images/flowers/Customswipe_b.png", UriKind.Relative));
有没有办法让它从资源加载而不将其复制到目标系统。
以下工作对我来说很好:
image.Source = new BitmapImage(new Uri("pack://application:,,,/YourAssemblyName;component/Resources/someimage.png", UriKind.Absolute));
您还应该将图像的Build Action
从“ None
Build Action
更改为Build Action
Resource
。
您可以打开资源编辑器(解决方案资源管理器,单击Resources.resx)并在其中添加图像。 然后,您只需使用Properties.Resources.ImageId
其作为Bitmap
访问即可
http://sofzh.miximages.com/c%23/ppre code Image2.Source = new Bitmap( System.Reflection.Assembly.GetEntryAssembly(). GetManifestResourceStream(MyProject.Resources.myimage.png”));
要么
Image2.Source = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);
我推荐第二个。
您添加图像然后将其“构建操作”更改为“资源”的方式也可以完成工作,但是当您要求从资源添加和加载时,可以采用不同的方法来实现相同的任务。 我会提供一个阅读某些msdn文章的链接。
添加和编辑资源(Visual C#)
我有一些问题要找到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:,,,
部分不会更改。 - 务必将“构建操作”设置为“资源”
有关更多信息: 请参阅此处 。