在代码中将透明PNG转换为System.Drawing.Icon

dev*_*os1 6 .net c# wpf icons png

我希望将透明的PNG图像作为ImageSource转换为尊重PNG透明度的System.Drawing.Icon.

如果您将窗口的图标设置为PNG ImageSource,WPF可以在某种程度上在内部执行此操作,但有什么方法可以手动执行此操作?具体来说,我需要这个来设置系统托盘通知图标,我真的想避免使用笨拙的.ico格式资源.

SLa*_*aks 6

你可以写

Icon.FromHandle(image.GetHIcon())
Run Code Online (Sandbox Code Playgroud)

完成后,您需要明确销毁图标:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
extern static bool DestroyIcon(IntPtr handle);

DestroyIcon(newIcon.Handle);
Run Code Online (Sandbox Code Playgroud)