Как сделать значок формата .ico на панели задач прозрачным? - PullRequest
0 голосов
/ 09 января 2019

Мне бы хотелось, чтобы фон значка на панели задач, который появляется при открытии приложения Windows Form, был прозрачным. Тем не менее, значок имеет белый фон, когда он появляется на панели задач. Я открыл файл .ico, и он имеет клетчатый фон, который указывает на прозрачность.

Как сделать фон значка на панели задач прозрачным?

Впервые я добавил значок в приложение Windows Form. Я также пытался использовать файл .png, но на панели задач отображался только значок .png по умолчанию.

Вот код, который объявляет значок объекта в области видимости класса:

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

Я использую приведенный ниже код в каждом методе Form_Load, чтобы установить значок в качестве объекта значка на панели задач.

this.Icon = icon; 

В этом случае я ожидал прозрачную иконку, но вместо этого получил белый фон.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вам необходимо определить «прозрачный» цвет иконки, например:

//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
0 голосов
/ 09 января 2019

Вы должны загрузить файл иконки напрямую , используя new Icon(fileName).

...