0

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

2 回答 2

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并获取所需大小的项目缩略图。

于 2013-07-27T14:51:37.707 回答
-1

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

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

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

于 2013-07-27T14:07:49.433 回答