图标调整大小构造函数返回不正确的大小
Icon Resize Constructor Returning Incorrect Size
我正在尝试使用 System.Drawing.Icon(System.Drawing.Icon, int, int)
调整我的应用程序中嵌入的 ICO 文件的大小,但我总是得到一个大小为 32x32 像素的图标,与原始图标大小相同(由Icon.ExtractAssociatedIcon(<main EXE file>)
。但是,问题中的ICO文件也包含128x128和256x256像素大小。为什么我无法从图标中获得更大的尺寸?
Icon.ExtractAssociatedIcon(...)
方法在内部使用 Shell32.dll 中的这个函数:
IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath, out ushort lpiIcon)
(http://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Icon.cs,8a5963a8e543d569), which returns the icon of one size only (for example 32*32). See: http://www.pinvoke.net/default.aspx/shell32.extractassociatedicon。
因此,如果您调用此构造函数重载:
Icon iconOfAnotherSize = new Icon(original, newWidth, newHeight)
然后您将获得与 original
相同的图标,因为没有其他尺寸可用。
要提取其他尺寸的图标,您可以尝试使用 PrivateExtractIcons and here is the example (Delphi)。
我正在尝试使用 System.Drawing.Icon(System.Drawing.Icon, int, int)
调整我的应用程序中嵌入的 ICO 文件的大小,但我总是得到一个大小为 32x32 像素的图标,与原始图标大小相同(由Icon.ExtractAssociatedIcon(<main EXE file>)
。但是,问题中的ICO文件也包含128x128和256x256像素大小。为什么我无法从图标中获得更大的尺寸?
Icon.ExtractAssociatedIcon(...)
方法在内部使用 Shell32.dll 中的这个函数:
IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath, out ushort lpiIcon)
(http://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Icon.cs,8a5963a8e543d569), which returns the icon of one size only (for example 32*32). See: http://www.pinvoke.net/default.aspx/shell32.extractassociatedicon。
因此,如果您调用此构造函数重载:
Icon iconOfAnotherSize = new Icon(original, newWidth, newHeight)
然后您将获得与 original
相同的图标,因为没有其他尺寸可用。
要提取其他尺寸的图标,您可以尝试使用 PrivateExtractIcons and here is the example (Delphi)。