D2007(2007年12月更新)BRCC32,ICO,RES和颜色深度问题/澄清

时间:2010-03-18 13:26:46

标签: delphi

经过我想要的更多调查后,我得出结论(可能是错误的),BRCC32在创建具有不同颜色深度的ICO图像的资源文件时遇到问题。

具体来说,如果ICO文件中的图标同时具有8位256色和24位XP(alpha)图像,那么BRCC32将生成包含这些图像的RES文件,但是包含8位和24位图像将被标记为24位。问题在于,想要显示24位图像的系统,即能够超过256种颜色的系统,将选择匹配该要求的第一图像。在我的情况下,至少,这恰好是“伪”24位256色图标。因此,您在桌面上获得的分辨率低于应有的分辨率。

使用HeavenTools的“资源调谐器”,可以清楚地看到“组图标”信息为8位图像保存24位描述符。

前进的两种方式。删除256色ico图像,这样只会在生成的RES文件中生成“正确”的24位XP Alpha图像。缺点是你需要它们没有256色图标。更好的方法是使用来自http://www.godevtool.com/#rc的GoRC.exe(资源编译器)作为BRCC32的替代方案。这可以正确处理8位和24位图像的组合。结果是窗口可以选择适合系统显示分辨率的正确图标。

作为一个副作用,我也看到BRCC32似乎没有处理PNG压缩图像(你得到错误15 分配失败)。我正在寻找这个错误,我遇到了GoRC(通过Jan Wichers博客)。

有没有人有类似的经历来证实我的任何发现,或者我错过了一些关键知识?我的后续将是,这仍然是D2009 / D2010中的一个问题吗?

保罗。

1 个答案:

答案 0 :(得分:1)

我最近遇到了同样的问题 - 如果你在同一个图标中有2​​56色和32位颜色的子颜色,那么BRCC32资源编译器肯定会感到困惑。经过大量调查后,似乎当图标组标题写入.res文件时,它总是放入32位的值,忽略实际的颜色深度。

我必须制作一个应用程序才能解决这个问题,我已将其附加到源代码下面。请记住,这是一个快速解决方案,我对资源文件中的内容做了一些假设,我认为它可以帮助你:

ResFix.zip