从代码中加载WPF中的图像

So *_*ins 13 .net c# wpf

我必须在网上阅读大量的解决方案,但由于一些愚蠢的原因,我无法让他们工作.

我的项目的Resources文件夹中有一个.jpg图像,图像设置为Build Action:Resource(非嵌入式资源),永远不会复制到输出文件夹.我的图片添加到我的resources.resx文件中.

我试图像这样访问该文件:

lResult = new BitmapImage(new Uri(@"pack://application:,,,/Resources/ImageMissing.jpg", UriKind.Absolute));
Run Code Online (Sandbox Code Playgroud)

但这说不清楚那里没有图像.

这是如此基本我觉得真的很蠢,但我似乎无法掌握资源使用的简单概念.

谢谢.

Jef*_*son 12

如果您需要指定从本地程序集引用所引用的资源,那么我认为您希望包含"component".例如,我有一些代码从我的代码所在的同一程序集中的资源中加载一个图标.我写这个:

var SourceUri = new Uri("pack://application:,,,/MyCompany.MyProduct.MyAssembly;component/MyIcon.ico", UriKind.Absolute);
thisIcon = new BitmapImage(SourceUri);
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/aa970069.aspx上提供的文章中所述,以下附加示例说明了"组件"的使用:

以下示例显示了位于引用程序集的项目文件夹的根目录中的XAML资源文件的程序包URI.

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml
Run Code Online (Sandbox Code Playgroud)

以下示例显示XAML资源文件的包URI,该文件位于引用的程序集的项目文件夹的子文件夹中.

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml
Run Code Online (Sandbox Code Playgroud)

以下示例显示了XAML资源文件的pack URI,该文件位于引用的特定于版本的程序集的项目文件夹的根文件夹中.

pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml
Run Code Online (Sandbox Code Playgroud)

请注意,引用的程序集资源文件的pack URI语法只能与application:/// authority一起使用.例如,WPF不支持以下内容.

pack://siteoforigin:,,,/SomeAssembly;component/ResourceFile.xaml
Run Code Online (Sandbox Code Playgroud)