如何从图标中提取特定大小的图像?

Bra*_*nko 8 delphi delphi-2010

如何从具有多个图像的图标中提取特定尺寸的图像或所有图像?

Dav*_*vid 11

你没有说明这是什么目的,并且有很多方法可以获得图标,一种方法可能比另一种方法更好,具体取决于目的.

但是,要从任意文件中提取任意数量的"大"(32x32)和/或"小"(16x16)图标*,请使用该ExtractIconEx功能.这使您可以从图标文件(.ico),EXE或DLL中提取这两种标准大小中的任何一种的一个或多个图标.图标文件可以包含多个图像,此功能可以让您获得所有图像.

该函数将写入句柄数组,每个句柄都可以分配给实例的Handle属性TIcon.然后你可以使用TIcon方法,你通常会如果你加载TICON任何其他方式.请注意,Delphi XE的新功能是可以通过Assign方法将其轻松复制到位图. 该文章还介绍了如何访问所有库存(内置/标准)Windows图标,如果这恰好是您所追求的.

(旁注:我认为TIcon该类允许您通过其LoadFromFile方法从文件加载- 这似乎在文档中缺失,但我很确定它存在.从内存中,只加载一个图标.)

(*)其实,"大"和"小"可以是32×32和16x16不同:使用 GetSystemMetrics 函数与SM_CXICON, SM_CYICON,SM_CXSMICON,和 SM_CYSMICON标志,找出每种类型的尺寸.