2

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

问题是,在我添加新图像之前,所有这些图像都已符合要求。只有在我从资源文件中删除所有这些图像并再次导入它们(未更改)之后,它才会编译。

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

有人经历过类似的事情吗?有什么解决办法吗?

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

4

3 回答 3

4

根据这个线程,您在资源编辑器中遇到了一个错误,该错误发生了变化:

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

但请注意:这些 PNG 资源在通过LoadImage(). 使用此资源类型可能会将您的应用程序限制为 Vista。

于 2009-11-18T08:29:20.853 回答
1

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

IDI_BACKGROUND  RCDATA    "background.png"

然后你可以使用 GDI+ 从你的资源文件中加载它们。这在本文中进行了解释(C++)

于 2009-06-21T21:32:21.280 回答
1

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

我有时会看到这种情况失败 - 如果是这样,请使用 .bmp 扩展名保存您的 png 文件的副本(或将其保存为位图),然后将其添加为上述位图。编辑资源文件,你会看到这样的一行:

IDB_NEWFILE BITMAP "NewFile.bmp"

将其更改为

IDB_NEWFILE PNG“新文件.png”

并保存文件。下次您查看项目的资源时,应该已经创建了一个“PNG”部分(即使带有注释标题!)

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

于 2014-07-16T14:22:47.457 回答