在WPF中,如何在运行时从资源中加载图像?

6

我正在尝试使用以下代码在WPF中运行时加载图像:

_image = new Image();
BitmapImage src = new BitmapImage();
src.BeginInit();
src.UriSource = new Uri(@"pack://application:,,,/images/tagimages/placeholder.png", UriKind.Absolute);                
src.CacheOption = BitmapCacheOption.OnLoad;
src.EndInit();
_image.Source = src;
_image.Stretch = Stretch.None;

在我的项目中,我有一个名为images的文件夹和该文件夹下的一个子文件夹tagimages,其中包含了placeholder.png。当我运行此代码时,我收到以下错误信息:"Cannot locate resource 'images/tagimages/placeholder.png'"。我做错了什么?

1
你在项目中将图像文件的构建操作设置为“资源”了吗? - paul
是的,我已将其设置为资源,并且我已将所有内容转换为小写,以尝试消除任何大小写问题。 - John
2个回答

9
原来我应该使用:

标签。这与IT技术有关,涉及格式要求。
Uri(@"pack://application:,,,/<MyProject>;component/images/tagimages/placeholder.png", UriKind.Absolute);

我正在使用这个简单版本:<pre>MainLogoImg.Source = new BitmapImage(new Uri(@"/<MyProject>;component/Resources/" + CurrentLogo, UriKind.Relative));</code> - Pimenta
6
我不理解这是如何比旧的嵌入资源更好,旧的嵌入资源只需要将图像作为强类型属性获取即可。那些“打包应用三逗号我的项目分号相对URL声称它的绝对”的内容是什么意思?WPF没有意义。难怪人们要经过数小时甚至数天的试错才能让一些简单的东西起作用。 - Triynko
我一直收到“路径未找到”和“文件未找到”的错误。我该如何从程序的角度查看路径?我不想再猜测了,只需显示给我路径即可。 - HackSlash

1

从过程式代码中,您可以使用@"pack://application:,,,/putyourfilenamehere"来引用嵌入的资源。

换句话说

BitmapImage image = new BitmapImage(new Uri("pack://application:,,,/Images/myimage.png"));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接