Como expandir / desativar um painel com conteúdo usando c #

9

Eu tenho um painel como um contêiner neste painel tem uma foto como pano de fundo, dentro do painel do contêiner, eu tenho outro painel onde vou colocar algumas informações em rótulos, essa informação vai mudar no tempo, o que eu quero é uma transição quando uma nova informação está prestes a aparecer, desvanece o painel de informação com a informação antiga e depois desvanece no mesmo painel com a nova informação. No momento do desvanecimento do painel de informações, poderei ver a imagem de fundo do painel de contêineres. Ambos os painéis têm BorderStyle = FixedSingle, e o painel de informações tem uma cor de fundo.

Agora, minha pergunta é: existe alguma maneira de diminuir / diminuir o painel de informações e todo o conteúdo também?

Eu estava pesquisando na web, e encontrei uma abordagem para esse efeito trabalhando com o backcolor do painel, mas ele não funciona, e além disso, o conteúdo ainda está lá, já que eles tentam diminuir a propriedade do backcolor:

Timer tm = new Timer();
    private void Form1_Shown(object sender, EventArgs e)
    {
        tm.Interval = 100;
        tm.Tick += new EventHandler(timer1_Tick);
        tm.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int aa = 0;
        panel2.BackColor = Color.FromArgb(aa, 255, 0, 0);

        aa += 10;
        if (aa > 255)
            tm.Enabled = false;
    }

Qualquer ajuda será apreciada.

    
por Somebody 16.09.2011 в 18:00
fonte

2 respostas

3

Eu não acredito que você possa definir a opacidade dos controles individuais. O formulário em si tem uma opacidade, mas não acho que você queira eliminar todo o controle.

Você pode criar controles personalizados que suportam a opacidade ... aqui está um exemplo: link

Acredito que essa implementação se aplicaria a controles filho dentro do painel (porque está trabalhando na área retangular que o controle ocupa). Se eu estiver errado, você terá que lidar com todos os controles infantis como parte de seu comportamento sobrecarregado.

Como outros já disseram, fazer isso parecer "suave" pode ser muito trabalhoso. Espero que alguém tenha uma resposta melhor.

    
por Rob P. 16.09.2011 / 22:03
fonte
2

Como sugerido em outras respostas, você não pode (facilmente sem seus próprios controles) aumentar / diminuir um painel.

Você pode desbotar ou desbotar o formulário na inicialização OU ter um formulário de caixa de diálogo modal que aparece ou desaparece.

Fade In

    private void FadeIn_Tick(object sender, EventArgs e)
    {
        this.Opacity += .08;
        if (this.Opacity >= 1)
        {
            FadeIn.Stop();
        }
    }

Fade Out

    private void FadeOut_Tick(object sender, EventArgs e)
    {
        this.Opacity -= .08; //Decrease opacity
        if (this.Opacity <= 0) //While it is not 0
        {
            FadeOut.Stop(); //Stop!
            this.Close(); //Close the form
        }
    }
    
por MisdartedPenguin 22.09.2011 / 15:52
fonte