我正在寻找一种从可执行文件中获取图标的方法,并创建一个使用此图标的新可执行文件(使用 CSharpCodeProvider )。
第一部分很简单,我使用:
Icon icon = Icon.ExtractAssociatedIcon(path);
当我想要"附加"图标。我尝试使用:
compilerParameters.CompilerOptions = @"/win32icon:"
但是这个解决方案需要将图标写入文件中,我希望避免这种情况(其中一个原因是保存超过16种颜色的图标真是太乱了.. )。
是否可以直接在内存中使用System.Drawing.Icon对象?
编辑:为了清楚起见,我试图获得一个可以将C#代码编译成可执行文件的代码。此可执行文件将具有仅在内存中保存的图标(作为Icon对象),而不在文件中(作为.ico文件)。
答案 0 :(得分: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
更多信息
答案 1 :(得分:0)
解决方案:
如果有人想要做同样的事情,这里有一个带来预期结果的方法(图标提取具有正确的图形质量)。
我使用Tsuda Kageyu IconExtractor来获取我想要的图标并将其转换为具有透明度的Bitmap。 然后我使用@mohsen建议的IconLibrary将图标写为.ico文件,然后将其嵌入CompilerOptions。