Visual Studio 2008资源编辑器对PNG很烦人

时间:2009-06-21 21:11:29

标签: visual-studio-2008 png resource-file

我在VS2008中有一个资源DLL项目,主要包含PNG图像。每次我将新图像导入资源文件时,都会收到RC2170错误:位图文件不是3.0格式,对于以前在资源文件中的每个PNG。

事实是,在添加新图像之前,所有这些iamges都已经完成了。只有在我从资源文件中删除所有这些图像并再次导入它们(未更改)之后,它才会编译。

对于添加的每个新PNG文件,此行为会重复,随着PNG文件数量的增加,它变得越来越烦人。

任何人都有类似的经历吗?任何解决方案?

BTW:我实际上并不需要资源编辑器将PNG文件识别为图像,如果可以解决这个问题。

3 个答案:

答案 0 :(得分:4)

根据this thread,您遇到资源编辑器中的错误:

IDI_DENTIFIER PNG "background.png"
于:
IDI_DENTIFIER BITMAP "background.png"

但请注意:通过LoadImage()调用时,这些PNG资源似乎不会加载到Vista之前的操作系统上。使用此资源类型可能会将您的应用程序限制为Vista。

答案 1 :(得分:1)

资源编辑器不直接支持PNG图像。您必须将它们添加为二进制文件,如下所示:

IDI_BACKGROUND  RCDATA    "background.png"

然后您可以使用GDI +从资源文件加载它们。这在this article(C ++)

中有解释

答案 2 :(得分:1)

我为此苦苦挣扎,但发现(至少在Visual Studio 2012中)您可以轻松添加png文件作为资源。在资源视图中,右键单击.rc文件名,然后选择"添加资源"。选择类型'位图'然后点击“导入”。"选择所需的.png文件。应在您的资源列表中添加一个名为" PNG"的新部分。它应该像BITMAP资源一样工作。

我偶尔会看到这种失败 - 如果是这样,请保存带有.bmp扩展名的png文件的副本(或将其保存为位图),然后将其添加为如上所述的位图。编辑资源文件,您将看到如下所示的行:

  

IDB_NEWFILE BITMAP" NewFile.bmp"

将其更改为

  

IDB_NEWFILE PNG" NewFile.png"

并保存文件。下次你查看项目的资源时,可以看到PNG'应该已创建部分(即使有注释标题!)

但是,据我所知,具有透明度的png文件要么无法正确显示,要么在加载时会导致崩溃(例如,进入按钮)。