Прозрачная или полупрозрачная панель управления - PullRequest
2 голосов
/ 23 сентября 2010

Есть ли способ сделать панель прозрачной или полупрозрачной? Я не нашел подходящего свойства для настройки прозрачности панели.

Я также пытался создать элемент управления WPF с сеткой (фон сетки и фон элемента управления был прозрачным) и поместить его в обычную форму окон, но когда я помещаю этот элемент управления в обычную форму Windows (не WPF), я не вижу получить правильную прозрачность.

Ответы [ 3 ]

2 голосов
/ 06 июля 2014

Если ваш дисплей в значительной степени статичен, вы можете сделать это для достижения полупрозрачности ( Источник ):

class SeeThroughPanel : Panel
{
    public SeeThroughPanel()
    {
    }

    protected override CreateParams CreateParams {
        get {
            var cp = base.CreateParams;
            cp.ExStyle |= 0x00000020;
            return cp;
        }
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        //base.OnPaint(e);
        e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(50, 0, 0, 0)), this.ClientRectangle);
    }
}

Но этот подход не без проблем, если вам нужнодинамический рендеринг на вашем полупрозрачном элементе управления.См. этот вопрос, который я разместил.Надеюсь, что когда-нибудь ответят.

1 голос
/ 23 сентября 2010

К сожалению, прозрачность изначально или не поддерживается в WinForms, и ее сложно реализовать самостоятельно.

Если вам нужна прозрачная панель, которая позволяет вам «видеть сквозь» форму, взгляните на эту статью , в которой вам нужно указать как TransparencyKey, так и * 1006.* к чему-то вроде Fuscia.Если на панели есть текст или другие элементы, этот эффект может выглядеть не очень хорошо.

Если вам нужна прозрачная или полупрозрачная панель с изображением ниже, взгляните на этот вопрос SO .

Я бы использовал WPF полностью, если бы вы теперь могли использовать его в форме.

0 голосов
/ 23 сентября 2010

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

Например, установите для свойства TransparencyKey формы значение «Фуксия», затем установите для BackColor панели значение «Фуксия», и это создаст прозрачную область на форме.

Edit:

Согласитесь с @Callum Rogers о переходе на WPF. Текст прямо на панели показывает окантовку (см. Метку на скриншоте). Однако если вам нужно быстро добавить это в существующее приложение Win Forms и не нужно отображать текст непосредственно на панели, это может сработать для вас.

alt text

...