从文件扩展名获取大图标

时间:2011-06-22 02:16:08

标签: c# wpf icons file-extension

有几个地方讨论如何从文件扩展名中获取图标,例如this一个和this other一个。经过几个小时的这种项目,我设法建立了类似的东西:

private void addButton_Click(object sender, System.EventArgs e)
    {           
        System.Drawing.Icon temp = IconReader.GetFileIcon(".cs", IconReader.IconSize.Large, false);
        pictureBox1.Image = temp.ToBitmap();
    }

执行该按钮让我:

enter image description here

但我试图获得大图标。请注意窗口上的图标如何更大:

enter image description here

我怎么能得到那个图标而不是较小的图标。我花了很多时间改变其他程序。此外,我想使用wpf,大多数示例都是使用Windows窗体。如果我能得到一个如何提取文件图标而不是修改整个项目的例子,我将不胜感激。如果这不可能仍然会非常有帮助,我将不胜感激。只是我不是一个程序员,我花了很多时间来修改其他的例子。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

您引用的代码仅使用2种尺寸:

public const uint SHGFI_LARGEICON = 0x000000000;     // get large icon
public const uint SHGFI_SMALLICON = 0x000000001;     // get small icon

要获得extra_large大小,您需要添加自己的定义(并为调用函数添加另一个枚举):

public const uint SHGFI_EXTRALARGEICON = 0x000000002;     // get extra large icon

或者如果您只是想要快速修复,请将0x000000000替换为原始大型定义中的0x000000002

以下是所有图标尺寸: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762185%28v=vs.85%29.aspx

答案 2 :(得分:0)

你不能让ShGetFileInfo返回ExtraLarge和Jumbo图标。

相反,

1)使用SysIconIndex(0x000004000)标志调用ShGetFileInfo 2)使用ShGetImageList获取具有适当大小的系统图像列表 3)使用ImageList_GetIcon和SHFILEINFO的.iIcon值获取HICON。