相关疑难解决方法(0)

如何从资源中获取BitmapImage?

我的程序集包含一个BuildAction == Resource的图像.我想从这个嵌入式资源中获取BitmapImage.

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

var bitmap = new BitmapImage(new Uri(path));
Run Code Online (Sandbox Code Playgroud)

但是如何创建一个将引用嵌入式资源图像的Uri呢?

当我尝试创建' pack URI '(例如pack://application:,,,/MyImage.pngpack://application:,,,/MyAssembly;component/MyImage.png)时,会抛出异常:

System.UriFormatException"无效的URI:由于存在冒号(':')而无法解析端口,因此需要端口."

我在这篇博客文章中找到了修复UriFormatException

但是,应用该修复程序后,我仍然会尝试从包URI加载BitmapImage.

使用pack://application:,,,/Image.png格式时,我得到一个NullReferenceException,当使用该pack://application:,,,/AssemblyName;component/Image.png格式时,我得到一个NotSupportedException"无法识别Uri前缀".


总结 我的问题是我在实例化任何WPF控件/窗口/等之前尝试在进程中使用'pack URI',因此'pack'URI方案尚未注册(其他WPF必需'stuff'也必须不要设置,因为手动注册包方案本身不能解决问题).解决方案是等到实例化我的WPF用户控件后才使用包URI.

wpf resources bitmapimage pack-uri

34
推荐指数
1
解决办法
5万
查看次数

标签 统计

bitmapimage ×1

pack-uri ×1

resources ×1

wpf ×1