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

本文关键字:图标 可执行文件 保存 | 更新日期: 2023-09-27 18:25:13

我写了一个保存可执行文件图标的程序。 当我通过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();

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

这并不容易。您必须使用系统映像列表。.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 并获取所需大小的项目缩略图。

你应该阅读这个维基百科MSDN

16x16 或 32x32 是 ICO 的标准尺寸。你不能指望32x32图像是非常高清

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