Delphi 2007中更改图标的问题

6
我一直在使用别人制作的程序,我想更改图标。我有一个256x256的图标。我使用http://converticon.com/创建了图标(我认为是从bmp中创建的)。我在Inno Setup中使用该图标创建了安装程序,它运行得很好。所以我进入“选项”->“应用程序”并尝试加载它。然而,Delphi 2007给了我一个错误,“参数不正确”,并显示了这个信息:http://i.stack.imgur.com/vRCgs.png。当我在Delphi XE中做同样的事情时,它可以工作并加载图标并在编译时更改它。但是现在我无法使用XE,因为该程序使用的数学解析器与Unicode存在问题(这是以后要修复的问题)。因此,我在XE中打开项目,更改图标,保存它,删除dproj并在2007中打开它。这可以工作,编译并显示正确的图标,但是当我进入项目选项时,它会给出相同的“参数不正确”的错误。

解决方法并不复杂,但我不应该需要这样做。有人知道为什么我不能在Delphi 2007中更改图标吗?

编辑:我刚刚使用同样的converticon网站将256x256图标转换为192x192和更小的尺寸,现在它完美地工作了。感谢回答。


请查看此答案 https://dev59.com/p3NA5IYBdhLWcg3wgeOk#930550 或许有所帮助。 - QMaster
3个回答

5
“图标”文件实际上是一个包含多个图像的集合,这些图像具有不同的分辨率和编码方式。当我创建我的图标时,我会确保它们不包含256x256的PNG编码版本,因为Windows Vista之前的开发工具无法理解。这包括你的Delphi 2007和我的Delphi 7。我还会删除alpha编码的256x256图标,因为这只会使文件变得不必要地大。
你有两个修复方法:
1.查找ICO编辑器,并删除所有较大的格式,直到您的Delphi接受该图标。我个人从未见过256x256在现实世界中使用,它们会占用用户桌面或Windows资源管理器中的大量空间。
2.使用虚拟图标并在Delphi完成后替换生成的exe中的图标资源。这样您就可以保留所有更大的图像格式,包括256x256 PNG图像。

更正错误

如果可能的话,请始终包含256x256图像,Windows会将其缩小到64x64以上的所有大小。
我一直以为Windows资源管理器会显示基于ICO中可用的最接近匹配图像大小的图像。也就是说,如果需要128x128的图像,则Windows会使用128x128的图像(如果可用),或者如果可用,则缩小256x256的图像,或者放大96x96的图像。显然不是这样。我刚刚制作了一个测试图标,其中包含多个图像格式,包括32、48、72、96、128和256,由简单的颜色块组成(使用泛洪工具)。在Windows资源管理器中,我循环查看了各种显示模式,结果发现从“大图标”开始(那不是非常大),Windows将缩小256x256图标,如果没有可用的,则使用48x48图标而不进行缩放!结果真的很丑陋和意外。72x72、96x96和128x128图标被忽略了。
感谢David指出这一点。

1
实际上,256像素的图标被广泛用于程序或文件关联文档图标,但显然不适用于工具栏图标。您需要熟悉平台设计准则。 - David Heffernan
哦,那很有道理。你知道图标能够正常工作的最大尺寸是多少吗?另外,你说“删除所有较大的格式”,这是否意味着.ico文件实际上存储了许多不同的尺寸,或者我可以制作一个大小为64x64的.ico文件? - KingKong
@David,我正在使用Axialis IconWorkshop将PNG图像(来自我的设计师)转换为图标。这个软件给了我3种256x256的图标,只有其中一种是PNG格式的。而且我说的不是工具栏图标,我说的是在Windows资源管理器中显示的快捷方式和文档图像(包括桌面)。当然,您可以选择为文档显示真正大的图标,但是当您达到256x256时,图标会变得非常大,一个巨大的1920 x 1080显示器仅能垂直显示4个图标,我从未见过任何人这样做。[...] - Cosmin Prund
1
系统会将256个图标缩放至64以上的所有尺寸,假设您正在使用标准尺寸集。 - David Heffernan
@David,感谢指出,已对答案进行了更正。 - Cosmin Prund
显示剩余2条评论

2

旧版本的Delphi不支持256px的Vista图标。我相信2010版不支持这个功能,所以我猜这个限制在XE版中被修复了。

在使用旧版Delphi时,您需要将256px图标从IDE中移除。您仍然可以通过命令行编译器构建带有256px图标的可执行文件-在我从Delphi 6升级之前,我就是这么做的。但是要实现这一点需要使用一个能干的资源编译器,例如Microsoft提供的一个。


0

2007年将允许您选择带有256像素图像的图标。以下是我尝试过的:

  • Delphi XE的默认图标包含多个图像大小,包括256像素图像。

  • 如果我使用资源编辑器从Delphi XE应用程序中提取图标,然后使用IDE的项目选项将该图标添加到Delphi 2007应用程序中,我不会收到错误提示,并且在Windows Vista/7上使用Explorer时,图标图像以不同的大小显示,效果符合预期。

  • 如果我使用IcoFX删除除256像素图像之外的所有图像大小,然后再次尝试选择它,则会出现错误。

尝试创建一个包含其他图像大小的.ico文件,看看是否适用于您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接