如何调整Windows图标叠加的大小?

时间:2012-01-18 07:28:34

标签: c# windows windows-shell shell-icons

我为我的文件*.myfile制作了一个图标叠加层,但叠加层尺寸错误。当图标显示大小为16x16时,叠加层将覆盖图标。

如何更改叠加尺寸? (IShellIconOverlayIdentifier

left is mine, right is tortoisesvn

1 个答案:

答案 0 :(得分:6)

您无法更改叠加尺寸。而是使用多分辨率图标文件,其中所有必要的尺寸都可用。

举个好例子,看看source of TortoiseSVN。它们只会使用一个图标文件,但是如果你用适当的绘图工具打开它,你会看到这个文件包含不同的大小。

更新

如果你看一下第一种方法,你会得到以下评论:

  

“Shell调用IShellIconOverlayIdentifier :: GetOverlayInfo来请求   处理程序图标覆盖的位置。图标覆盖处理程序返回    包含叠加图像的文件的名称及其索引    那个文件。然后,Shell将图标叠加添加到系统图像列表中。“

您可以在第129行看到它试图从注册表中找出所需文件的路径。通过浏览代码,您可以找到icons in subversion here。在第165行,您可以看到它从注册表中获取文件名并将其写回其out参数,并且可能是魔术标志,让Windows决定从文件中取出的大小为*pdwFlags = ISIOI_ICONFILE;