如何从具有多个图像的图标中提取特定尺寸的图像或所有图像?
解决方法
你没有说明这是什么目的,并且有很多方法可以获得图标,一种方法可能比另一种方法更好,具体取决于目的.
但是,要从任意文件中提取任意数量的“大”(32×32)和/或“小”(16×16)图标*,请使用ExtractIconEx
功能.这使您可以从图标文件(.ico),EXE或DLL中提取这两种标准大小中的任何一个的一个或多个图标.图标文件可以包含多个图像,此功能可以让您获得所有图像.
该函数将写入句柄数组,每个句柄都可以分配给TIcon实例的Handle属性.然后,如果您以任何其他方式加载TIcon,就可以像往常一样使用TIcon
methods.请注意,Delphi XE的新功能是可以轻松地将其复制到位图via the Assign method. That article还显示了如何访问所有库存(内置/标准)Windows图标,如果这恰好是您所追求的.
(旁注:我认为TIcon
类允许您通过其LoadFromFile方法从文件加载 – 这似乎在文档中缺失,但我很确定它存在.从内存中,只加载一个图标.)
(*) Actually,“large” and “small” can
be different to 32×32 and 16×16: use
the
07005
function with theSM_CXICON
,
SM_CYICON
,SM_CXSMICON
,and
SM_CYSMICON
flags to find out the dimensions of each type.