我在尝试在 winform 上显示一些图像时遇到问题。 在一种窗体上,我有一个 wpf 容器,它有一个 WPF 控件,可以毫无问题地从外部 exe(将图像作为资源)加载图像,该控件引用包含窗体的 dll,使用 wpf 容器,显示它们。
现在,我想添加另一个 winform,并且需要在那里显示使用 wpf 容器显示的相同图像,但我无法将 wpf 容器添加到此表单,因为我需要在组合框。
如何使用 URI 包加载此图像,或者如何将此 uri 转换为可以从 winform 中使用的内容。
示例 uri。
pack://application:,,,/myPack;component/Images/image.png
最佳答案
您要做的是读取图像数据以在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;
关于c# - 使用 pack uri 在 winforms 中加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114990/