我一直在使用别人制作的程序,我想更改图标。
我的图标是256x256。我用过http://converticon.com/创建图标(我认为是来自 bmp)。我使用 Inno Setup 中的图标创建了一个安装程序,效果很好
因此,我转到“选项”->“应用程序”并尝试加载它。但是,Delphi 2007 给我一个错误“参数不正确”。包含以下信息:/image/vRCgs.png
当我在 Delphi XE 中做同样的事情时,它会工作并加载图标并在编译时更改它。我现在无法使用 XE,因为该程序使用的数学解析器存在 unicode 问题(这是稍后修复的问题,哈哈)
所以,我所做的是在 XE 中打开项目,更改图标,保存它,删除 dproj 并在 2007 年打开它。这可以工作,编译并显示正确的图标,但是当我进入项目选项时,它给了我同样的“参数不正确”错误。
解决方法并不是什么大问题,但我不需要这样做。有谁知道为什么我无法更改 Delphi 2007 中的图标?
编辑:我刚刚使用同一个 conversionicon 网站将 256x256 图标转换为 192x192 或更小,现在它工作得很好。谢谢各位的解答
最佳答案
“图标”文件实际上是图像的集合,具有不同的分辨率并使用不同的编码。当我创建图标时,我确保它们实际上不包含 256x256 PNG 编码版本,因为 Windows Vista 之前构建的开发工具无法理解这一点。其中包括您的 Delphi 2007 和我的 Delphi 7。我还删除了 alpha 编码的 256x256 图标,因为它只会使文件变得不必要的大。
您有两个可能的修复方法:
- 找到一个 ICO 编辑器并删除所有较大的格式,直到您的 Delphi 接受该图标。
我个人从未在现实世界中见过 256x256,它们会占用用户桌面或 Windows 资源管理器中的大量空间。 - 使用虚拟图标,并在 Delphi 完成后替换生成的 exe 中的图标资源。这样您就可以保留所有较大的图像格式,包括 256x256 PNG 图像。
编辑以更正错误
如果可能,请始终包含 256x256 图像,Windows 会针对 64x64 以上的所有图像进行缩小。
我一直认为 Windows 资源管理器会显示基于 ICO 中可用的最接近匹配图像大小的图像。也就是说,如果需要 128x128 图像,Windows 将使用 128x128 图像(如果可用),或者缩小 256x256 图像(如果可用),或者放大 96x96 图像。显然事实并非如此。我刚刚制作了一个由多种图像格式组成的测试图标,包括由简单的颜色 Blob 组成的 32、48、72、96、128 和 256(使用洪水填充工具)。在 Windows 资源管理器中,我循环抛出各种显示模式,很明显,从“大图标”(不是很大)开始,Windows 会缩小 256x256 图标,如果不可用,请使用未缩放的 48x48 图标!结果确实丑陋且出乎意料。 72x72、96x96 和 128x128 图标被简单地忽略。
感谢大卫指出这一点。
关于delphi - Delphi 2007 中更改图标的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216212/