如何使任务栏中的.ico格式图标透明显示?

时间:2019-01-09 14:48:05

标签: c# winforms icons ico

我希望Windows窗体应用程序打开时出现的任务栏图标的背景透明。但是,该图标在任务栏中显示时为白色背景。我打开了.ico文件,它的方格背景表明透明度。

如何使任务栏中图标的背景透明?

这是我第一次向Windows窗体应用程序添加图标。我也尝试使用.png文件,但是任务栏中显示的只是默认的.png图标。

这是在类范围内声明对象图标的代码:

Icon icon = Icon.ExtractAssociatedIcon("galaxyicon.ico");

我在每个Form_Load方法中使用下面的代码将图标设置为任务栏中的图标对象。

this.Icon = icon; 

在这种情况下,我希望有一个透明的图标,但背景是白色。

2 个答案:

答案 0 :(得分:0)

您应该直接using new Icon(fileName)加载图标文件。

答案 1 :(得分:0)

您需要定义图标的“透明”颜色,例如:

//using System.Drawing;

#region MakeTransparentIcon

    ///<summary>
    /// Manipulates the background of an Icon
    ///</summary>
    ///<param name="icon">Icon source</param>
    ///<param name="disposeIcon">Icon dispose</param>
    ///<returns><see cref="Icon"/> or <see cref="T:null"/></returns>
    public static Icon MakeTransparentIcon(Icon icon, bool disposeIcon = true)
    {
        if (icon != null)
        {
            using (Bitmap bm = icon.ToBitmap())
            {
                bm.MakeTransparent(Color.Transparent); // define the background as transparent
                                                       // you need to align the color to your needs
                if (disposeIcon)
                {
                    icon.Dispose();
                }
                return Icon.FromHandle(bm.GetHicon());
            }
        }
        return null;
    }
    #endregion