我会包括图像与BuildAction==资源。我想要获得BitmapImage从这个嵌入的资源。

我可以载BitmapImage从文件是这样的:

var bitmap = new BitmapImage(new Uri(path));

但是,如何创建一个Uri,将参考一个嵌入的资源的图像?

当我试图建立一个'包URI'(例如 pack://application:,,,/MyImage.pngpack://application:,,,/MyAssembly;component/MyImage.png),一个异常:

系统。UriFormatException "无效URI:一口预计,因为有一个冒号(':')本,但港口,不能进行分析。"

我找到了修复,以UriFormatException在这 博客

但是,与修复加,我还能得到例外试图加载BitmapImage从一个包URI。

当使用 pack://application:,,,/Image.png 格式,我得到一个NullReferenceException,并且当使用 pack://application:,,,/AssemblyName;component/Image.png 格式,我得到一个NotSupportedException"Uri前缀是不承认".


摘要 我的问题是,我试图用一个包URI'在过程之前的任何WPF控制/窗/等已经实例,因此在'包装'URI方案尚未登记的(其他WPF所需的'东西'还必须不设置过,因为手册所包方案没有自身解决该问题)。解决的办法是等到以后的实例,我WPF用户控件使用包Uri。

有帮助吗?

解决方案

此MSDN页面拥有所有的信息,你可能想知道关于WPF资源的URI(通常称为包的URI)。你会想使用的相对URI 的往往可能,故见表格4 ,这应该是特别有用的。

如果你想要的资源(包)URI的简短的概述,请参阅的这个博客帖子。它表明,语法确实相对简单的:

pack://application:,,,/ResourceFile.xaml

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml

不过,也有一些怪癖摸出(在我的经验),所以经常会找到正确的资源URI需要实验位。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top