7

我在我的一些按钮上使用图片,我不希望这些图片包含在输出中。

这些图像是通过按钮属性设置的,因此它们是在 Resource.resx 文件中定义的。

有人告诉我将构建操作设置为嵌入式资源,但我很好奇为什么这会有所作为。我现在将构建操作设置为“无”,并且没有任何文件设置为复制。我可以将构建的应用程序移动到任何地方并启动它,所有图像都显示得很好。(为了澄清一点,图像在启动时肯定不在程序的目录中,它们仍然看起来很好)。

我在 MSDN 上查了一下,得到了这个:

无 - 文件不包含在项目输出组中,并且不在构建过程中编译。一个示例是包含文档的文本文件,例如自述文件。

嵌入式资源 - 此文件作为 DLL 或可执行文件嵌入到主项目构建输出中。它通常用于资源文件。

但从这听起来像是将它们全部设置为 None 甚至不应该工作(但确实如此)。

所以我很好奇将它设置为嵌入式资源有什么好处。我确实测试了它,并没有什么区别。希望有人能解释发生了什么。

我唯一的假设是,当通过按钮设置图像属性并将条目添加到资源文件时,它绝不会连接到添加到项目中的文件(即使它们相同)。因此,如果您以这种方式设置图像属性,则图像甚至不需要包含在项目中(即在解决方案资源管理器中)。

谢谢!

4

1 回答 1

10

您似乎偶然发现了两种不同的显示图像的方式。

  1. 如果您使用资源文件,则资源文件本身将包含图像,并且该文件将被复制到输出目录中。然后,您将从该资源文件中引用图像,一切都会好起来的。none/embedded/content 的实际图像设置无关紧要。这允许您为各种语言和位置创建资源文件,并根据您的应用程序文化更改使用的图像。

  2. 引用图像的另一种方法是将其嵌入或将其设置为项目中的内容。如果您将其设置为内容,它将复制到输出目录,并且可以根据位置进行物理引用,或者如果您嵌入它,该文件将位于创建的 dll 内,您可以使用其中拉取包含该文件的资源流内置函数。

您正在使用方法#1,因此一旦将其放入资源文件中,您就不必将其放入项目中,因为资源文件已经在项目中,这就是文件的来源。

于 2013-02-26T19:46:10.793 回答