当前位置:  开发笔记 > 开发工具 > 正文

Visual Studio:如何将图像资源存储为嵌入式资源?

如何解决《VisualStudio:如何将图像资源存储为嵌入式资源?》经验,为你挑选了4个好方法。

默认情况下,当您将图像(图标,位图等)作为资源添加到项目时,图像的构建操作将设置为.这样做是因为图像神奇地存储在.resources文件中.

希望将资源存储为嵌入式资源(我的理由是无关紧要的,但我们只是假装它,以便我可以在 RedGate的Reflector中看到它们).

所以我将每个图像的Build Action更改为Embedded Resource,然后资源出现在Lutz的Reflector中 - 完全按照我的意愿.

不幸的是,微软特意说不要这样做:

请注意,当资源编辑器添加图像时,它会将" 构建操作"设置为" 无",因为.resx文件引用了图像文件.在构建时,图像被拉入.resx文件创建的.resources文件中.然后可以通过为.resx文件自动生成的强类型类轻松访问该图像.

因此,您不应将此设置更改为嵌入式资源,因为这样做会在程序集中包含两次图像.

那么将图像作为嵌入资源包含的正确方法是什么?



1> Dirk Vollmar..:

注意:此答案不是处理图像资源的推荐方法.它只是解决了问题所描述的特定问题(即将图像包含为嵌入式资源).

不要将图像添加为资源.我宁愿做以下事情:

创建图像/图标并将其保存到文件中

选择Project - > Add Existing Item并添加文件

将Build Action设置为Embedded Resource

然后,您可以使用访问此资源

Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceUri)

这样,图像不会神奇地添加到项目资源文件中,并且只有一个图像副本存储在程序集的资源中.


@Will - 这将是一个很好的(对于我们新手:)有一个链接到"正确的方式"(如果这样的链接存在).
但由于OP肯定希望资源存储为嵌入式资源,我猜他必须使用GetManifestResourceStream方法访问它
如果你正在获得ManifestResourcesStream,99%的时间你做错了.我讨厌在那里看到这个,因为noobs可能会尝试以这种方式处理资源而不是通过属性编辑器.
但请注意,这使图像不可本地化.托德的回答很好地解释了这一点.

2> Steven A. Lo..:

在项目视图中,打开Properties子树; 双击Resources.resx项.

(如果没有,请右键单击"属性"项并选择"打开",然后单击左侧的"资源"选项卡,单击页面中间的链接以创建默认资源文件.)

单击resources.resx页面顶部的第一个droplist.它可能会说像"Strings"这样无用的东西,并选择Images.或者你可以按Ctrl+ 2.这将更改为"图像资源"视图.现在单击"添加资源"下拉列表,然后选择"现有文件".选择图像文件,然后单击"打开".如果您愿意,可以重命名资源.

单击"保存"图标.

您现在可以以编程方式访问嵌入式资源:

[namespace].Properties.Resources.[yourResourceName]



3> MBoy..:

在VS 2005中:

右键单击您的项目,然后选择添加新项.

添加资源文件.调用是 myImages.resx
将此文件放在项目的根文件夹中.

右键单击myImages.resx 并选择View Designer

选择添加资源,添加现有文件.

浏览图像,例如stop.bmp
此图像不必在此阶段包含在项目中.资源文件将自动执行此操作.

要在代码中引用图像,请使用以下内容:

btnStop.Image = myImages.Stop;



4> Todd..:

这取决于您想要如何使用图像.

如果你想本地化和访问特定文化的特定图像,那么使用它ResourceManager是一个很好的方法,因为它为卫星装配,搜索,后备等提供了一些很好的功能.

如果您只想在程序集中嵌入资源并且不担心本地化(使用Assembly.GetManifestResourceStream),那么只需添加图像并将构建操作设置Embedded Resource为可以.

文档警告您不要设置构建操作,Embedded Resource因为资源已由资源编译器通过.resx文件编译到程序集中.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有