【发布时间】:2015-09-09 18:21:59
【问题描述】:
我有一个 wpf 应用程序,并且得到了一个对代码隐藏有用的图像,它在项目中的位置类似于“projectName\images\pp.png”,它的构建操作是“Resource”(节点:不是嵌入式资源)。 我需要代码隐藏中的 System.Drawing.Image 对象。 我尝试了这些方法:
1.
var img = new BitmapImage(new Uri(@"\images\pp.png", UriKind.Relative));
var stream = img.StreamSource;
System.Drawing.Image needObj = Image.FromStream(stream);
我有一个空流,所以它不起作用。
2.
private static System.IO.Stream getResource(string name)
{
var assembly = Assembly.GetExecutingAssembly();
string resName = assembly.GetName().Name + ".g.resources";
return assembly.GetManifestResourceStream(resName);
}
var stream = getResource(@"\images\pp.png");
System.Drawing.Image needObj = Image.FromStream(stream);
我得到了一个 UnmanagedMemoryStream 对象,并且在调用“Image.FromStream(stream)”时发生了 InvalidArgument 异常。
谁能告诉我上述两种方法为什么不起作用或如何实现?
【问题讨论】:
-
如果操作正确,资源是
Bitmap,可以直接分配给Image变量。 -
问题解决了吗?
-
@eforlina 好的,知道了,资源,不是嵌入式资源。所以 ints 最好删除 winforms 标签,因为资源仅适用于 wpf