C# 如何获取.NET中Properties.Resources.Image的路径

C# 如何获取.NET中Properties.Resources.Image的路径,c#,.net,pdfsharp,C#,.net,Pdfsharp,我在这篇文章后面附上了一张图片作为参考: 我正在使用PDFSharp库创建PDF。绘制图像的方法需要图像的路径。如何获取Properties.Resources.Image的路径 还是有其他方法可以做到这一点 Properties.Resources.Image在内存资源中 您可以将图像保存到临时文件并获取路径 var path = Path.GetTempPath(); Properties.Resources.logo.Save(path); 以上使用您可以使用XImage.FromGd

我在这篇文章后面附上了一张图片作为参考:

我正在使用PDFSharp库创建PDF。绘制图像的方法需要图像的路径。如何获取
Properties.Resources.Image
的路径


还是有其他方法可以做到这一点

Properties.Resources.Image在内存资源中

您可以将图像保存到临时文件并获取路径

var path = Path.GetTempPath();
Properties.Resources.logo.Save(path);

以上使用

您可以使用
XImage.FromGdiPlusImage()
实际创建图像,而无需保存:


从PDFsharp/MigraDoc 1.50 beta 2及更新版本开始,使用MigraDoc时不再需要路径。已经提到,PDFsharp不需要文件名,因为可以从例如流中读取图像

MigraDoc仍然需要一个字符串。将图像数据编码为字符串(BASE64格式),并将该字符串作为文件名传递

另请参见:

如果它是一个映像,您应该真正使用File.writealBytes而不是writealText。您不应该将二进制数据视为字符串;奇怪的事情可能会发生。当我尝试
File.writealBytes(path,Properties.Resources.logo;)我得到了无效的表达式项。如果我执行
File.writealBytes(路径、属性、资源、徽标),我得到错误:1)System.IO.File.WriteAllBytes的最佳重载方法匹配具有无效参数。2) 参数2:无法从System.Drawing.Bitmap转换为字节[]。哦,它的位图有更好的API,
Bitmap.Save()
Save方法调用时,我遇到一些关于一般异常GDI+的错误。这是常见的吗?这表明位图文件中存在一些问题。一般来说,GDI+会抛出
OutOfMemoryException
,原因很多。你不必保存图像(位图)来绘制它,请参阅我的答案以获取示例。我看不出将图像保存到磁盘后,接受的答案如何成为“更好”的选项。它涉及更多的代码,意味着更多的维护和影响可读性。此外,映像将复制到磁盘上(资源已占用磁盘空间),并占用更多磁盘空间,因此必须执行更多代码来删除临时映像,使其更容易出错。您真正需要的只是更改一个方法调用以避免所有这些。@Mario:有些人在实际使用MigraDoc(使用PDFsharp)时编写PDFsharp。对于MigraDoc,您需要一个文件名,因此保存到文件是可以的。对于PDFsharp,使用图像更好,因此无需保存到文件。既然这个问题没有MigraDoc标签,我想你的答案会更好。@ThomasH如果能知道这个案例的真实情况就好了=)嗯。。。我收到一条消息“'XImage'不包含'FromGdiPlusImage'的定义”。。。。在XImage.cs中,我可以看到来自GDIPlusImage的注释掉的静态方法
var image = XImage.FromGdiPlusImage(Properties.Resources.logo);