从文件扩展名获取大图标

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

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

执行该按钮让我:

在此处输入图像描述

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

在此处输入图像描述

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

这是一个解决方案http://www.codeproject.com/KB/WPF/filetoiconconverter.aspx

您引用的代码仅使用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 

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

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

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

代替,

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