有几个地方讨论如何从文件扩展名中获取图标,例如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();
}
执行该按钮让我:
但我试图获得大图标。请注意窗口上的图标如何更大:
我怎么能得到那个图标而不是较小的图标。我花了很多时间改变其他程序。此外,我想使用wpf,大多数示例都是使用Windows窗体。如果我能得到一个如何提取文件图标而不是修改整个项目的例子,我将不胜感激。如果这不可能仍然会非常有帮助,我将不胜感激。只是我不是一个程序员,我花了很多时间来修改其他的例子。
答案 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。