使用pack-uri加载winforms中的映像

本文关键字:映像 winforms pack-uri 加载 使用 | 更新日期: 2023-09-27 17:57:29

我在winform上显示一些图像时遇到问题。在一个表单上,我有一个wpf容器,它有一个wpf控件,可以从外部exe(将图像作为资源)加载图像,该外部exe引用包含该表单的dll和显示图像的wpf容器。

现在,我想添加另一个winform,我需要在那里显示使用wpf容器显示的相同图像,但我不能向该表单添加wpf容器,因为我需要在组合框上显示图像。

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

示例uri。

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

使用pack-uri加载winforms中的映像

您想要做的是读取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;