使用pack uri在winforms中加载图像

时间:2011-05-24 18:20:35

标签: c# .net wpf uri

我在尝试在winform上显示一些图像时遇到问题。 在一个表单上,我有一个wpf容器,它有一个WPF控件,从外部exe(具有图像作为资源)加载图像没有问题,它引用包含表单的dll与wpf容器,向他们展示。

现在,我想添加另一个winform,我需要在那里显示,使用wpf容器显示相同的图像,但是我无法在此表单中添加wpf容器,因为我需要在组合框。

如何使用URI包加载此图像,或者如何将此uri转换为我可以从winform中使用的内容。

示例uri。

pack://application:,,,/myPack;component/Images/image.png

2 个答案:

答案 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);

因为内容不适用于图像文件。