我在尝试在winform上显示一些图像时遇到问题。 在一个表单上,我有一个wpf容器,它有一个WPF控件,从外部exe(具有图像作为资源)加载图像没有问题,它引用包含表单的dll与wpf容器,向他们展示。
现在,我想添加另一个winform,我需要在那里显示,使用wpf容器显示相同的图像,但是我无法在此表单中添加wpf容器,因为我需要在组合框。
如何使用URI包加载此图像,或者如何将此uri转换为我可以从winform中使用的内容。
示例uri。
pack://application:,,,/myPack;component/Images/image.png
答案 0 :(得分:4)
您要做的是读取要在Winforms中使用的图像数据,因此您需要直接访问嵌入式资源图像文件,这可以这样做:
Uri uri = new Uri("pack://application:,,,/myPack;component/Images/image.png", UriKind.RelativeOrAbsolute);
StreamResourceInfo info = Application.GetContentStream(uri);
System.Drawing.Image myImage = System.Drawing.Image.FromStream(info.Stream);
编辑:如果您收到有关无效端口的例外情况,请确保您已注册包方案,您只能通过引用它来执行此方案。所以把这行代码放在上面的代码之前:
string s = System.IO.Packaging.PackUriHelper.UriSchemePack;
答案 1 :(得分:0)
请注意!!
你应该用这个:
Application.Get的资源强>流(URI);
而不是:
Application.Get的内容流(URI);
因为内容不适用于图像文件。