C# - 保存可执行文件的图标

时间:2013-07-27 13:28:40

标签: c# .net system.drawing

我编写了一个保存可执行文件图标的程序。当我通过ExtractAssociatedIcon方法获取可执行文件的图标并保存时,输出图标的质量为低质量。我能做什么?

var ico = Icon.ExtractAssociatedIcon(@"c:/test.exe");
FileStream stream = new System.IO.FileStream(string.Format("{0}{1}", Path.GetTempPath(), "icon" + counter + ".ico"), System.IO.FileMode.Create);
ico.Save(stream);
stream.Flush();
stream.Close();

2 个答案:

答案 0 :(得分:2)

这并不容易。您必须使用SystemImageList。 .NET框架不支持它,因此您必须使用不安全的方法来访问系统。 Icon.ExtractAssociatedIcon仅返回32x32分辨率。

如果你真的这样做,这是一个好的开始:http://www.vbaccelerator.com/home/NET/Code/Libraries/Shell_Projects/SysImageList/article.asp

更新:如果您只想要.exe文件并且不需要Windows XP支持,您也可以使用Windows API Codepack http://archive.msdn.microsoft.com/WindowsAPICodePack并获取所需大小的项目缩略图。

答案 1 :(得分:-1)

您应该阅读此Wikipedia MSDN

16x16或32x32是ico的标准尺寸。你不能期望32x32image非常高清

  

Shell图标大小值允许使用更大的图标代替   32×32图标和Shell小图标大小值允许使用自定义   尺寸代替16×16图标。[3]因此,即使在Windows XP之前,也是如此   单个图标文件可以存储从1×1像素到任何大小的图像   256×256像素(包括非方形尺寸),16,256,65535或   1670万种颜色;但是shell无法显示非常大的图标。