2015-12-14 29 views
0

如何从C#桌面应用程序的\ Resources文件夹中获取特定图像(作为Stream)?如何从资源中读取图像作为流?

在Visual Studio中,我将映像导入\ Resources文件夹,它具有File NameFull Path属性。我想用它的名字。

我的目标是要做到这一点:

System.IO.Stream contentStream = get the image stream from \Resources 
System.Net.Mail.LinkedResource logo = new LinkedResource(contentStream); 
+0

在这一点上,我不明白这个文件,具体怎么类型'Example'参与,并在资源名称是:https://msdn.microsoft.com/en-us/library/zxee5096(v= vs.110)的.aspx?CS-保存琅= 1&CS-LANG = CSHARP#代码片段 - 3 – Tim

+0

我想'Example'只是利用当前的类找到组装,但他们在哪里得到的名称为 “闪屏” ? – Tim

回答

3

你有几个简单的选项。

的/ Resources文件夹是不完全是一个特殊的文件夹。您仍然需要在解决方案资源管理器中选择要嵌入到程序集中的任何项目,然后从“属性”窗口中指定其构建类型为“嵌入式资源”。然后使用ResourceManager.GetStream以流的形式检索内容。

对于大多数情况下,简单的方法,虽然是使用项目属性设计器窗口到你想要的文件添加一个Resources.resx文件,然后添加到资源的设计师。例如,你可以这样添加图像:

enter image description here

Visual Studio将生成代码供您检索您嵌入这样的文件。

+0

谢谢。我被困在尝试实例化ResourceManager的这一点上。什么是默认的“baseName”,提供给构造函数的第一个参数?如果我进入Project Properties -Resources,我可以在那里看到嵌入的图像。 – Tim

+0

我收到此错误:“找不到适合指定区域性或中性文化的资源确保\” {Resources.resources \”正确嵌入或链接到程序集\‘在编译时富\’,或所有卫星程序集都需要... – Tim

+0

当我采用第一种直接使用ResourceManager的方法时,我经常不得不面对这些问题。阅读https://support.microsoft.com/en-us/kb/319292以获取更多帮助我更喜欢在大多数情况下使用Resources设计器,它更容易管理,而且您不必担心名称是否正确; VS会为您做,如果您想自己动手,使用Resources设计器,然后查看生成的Resources.Designer.cs文件,看看它如何构建ResourcesManager。 –