mac*_*nir 34 wpf resources bitmapimage pack-uri
我的程序集包含一个BuildAction == Resource的图像.我想从这个嵌入式资源中获取BitmapImage.
我可以从这样的文件加载BitmapImage:
var bitmap = new BitmapImage(new Uri(path));
Run Code Online (Sandbox Code Playgroud)
但是如何创建一个将引用嵌入式资源图像的Uri呢?
当我尝试创建' pack URI '(例如pack://application:,,,/MyImage.png或pack://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.
Nol*_*rin 20
此MSDN页面包含您可能想要了解的有关WPF中资源URI的所有信息(通常称为包URI).您可能希望更频繁地使用相对URI,因此请参阅表4,这应该是特别有用的.
如果您想要简要概述资源(包)URI,请参阅此博客文章.它表明语法确实相对简单:
pack://application:,,,/ResourceFile.xaml
pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml
Run Code Online (Sandbox Code Playgroud)
但是,有一些问题需要解决(根据我的经验),所以经常找到正确的资源URI需要一些实验.
| 归档时间: |
|
| 查看次数: |
54337 次 |
| 最近记录: |