我在尝试在 winform 上显示一些图像时遇到问题。在一种窗体上,我有一个 wpf 容器,它有一个 WPF 控件,可以毫无问题地从外部 exe(将图像作为资源)加载图像,该控件引用包含窗体的 dll,使用 wpf 容器,向他们展示。
现在,我想添加另一个 winform,并且需要在那里显示使用 wpf 容器显示的相同图像,但我无法向此表单添加 wpf 容器,因为我需要在组合框中显示图像。
如何使用 URI 包加载此图像,或者如何将此 uri 转换为可以从 winform 中使用的内容。
示例 uri。
pack://application:,,,/myPack;component/Images/image.png
Run Code Online (Sandbox Code Playgroud)
您要做的是读取图像数据以供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);
Run Code Online (Sandbox Code Playgroud)
编辑:如果您收到有关无效端口的异常,请确保您已注册包方案,只需引用它即可完成此操作。所以把这行代码放在上面的前面:
string s = System.IO.Packaging.PackUriHelper.UriSchemePack;
Run Code Online (Sandbox Code Playgroud)