0

我正在寻找一种从可执行文件中获取图标的方法,并创建一个使用该图标的新可执行文件(使用CSharpCodeProvider )。

第一部分很简单,我使用:

Icon icon = Icon.ExtractAssociatedIcon(path);

当我想“附加”图标时,问题就来了。我尝试使用:

compilerParameters.CompilerOptions = @"/win32icon:"

但是这个解决方案需要将图标写入文件中,我想避免这种情况(原因之一是保存超过 16 种颜色的图标是如此混乱......)。

是否可以直接在内存中使用 System.Drawing.Icon 对象?

编辑:为了清楚起见,我正在尝试获取可以将 C# 代码编译为可执行文件的代码。此可执行文件将有一个图标,该图标仅保存在内存中(作为 Icon 对象),而不保存在文件中(作为 .ico 文件)。

4

2 回答 2

1

使用IconLibrary保存图标

Icon icon = Icon.ExtractAssociatedIcon(@"C:\Windows\System32\notepad.exe");
MultiIcon mIcon = new MultiIcon();
SingleIcon sIcon = mIcon.Add("notepad");
sIcon.CreateFrom(icon.ToBitmap(), IconOutputFormat.Vista);
sIcon.Save(@"c:\notepad.ico");

并将其用于CompilerOptions

更多信息

https://msdn.microsoft.com/en-us/library/2aaxe43f.aspx

于 2016-06-08T14:01:07.667 回答
0

解决方案 :

如果有人想做同样的事情,这里有一种方法可以带来预期的结果(以正确的图形质量提取图标)。

我使用Tsuda Kageyu IconExtractor来获取我想要的图标并将其转换为具有透明度的位图。然后我使用@mohsen建议的 IconLibrary 将图标写入 .ico 文件,然后将其与 CompilerOptions 一起嵌入。

于 2016-06-08T19:02:15.253 回答