Pergunta

Gostaria de saber se é possível criar agradáveis ??efeitos de formulário sobre o quadro compacto.

Meu plano é que, quando um usuário seleciona uma imagem no formulário principal este é aberto em uma nova forma, este trabalha atualmente. O que eu agora quero fazer é tornar o formulário que contém a imagem em tamanho real para carregar para fora da borda (esquerdo ou direito) da tela em cerca de 4 pixels de altura, em seguida, deslizar em vista. Depois que o formulário é totalmente na tela, em seguida, expandir a altura até atingir o máximo para a tela.

No próximo eu gostaria de reduzir a altura de volta para os 4 pixels de altura eo slide fora da borda novamente antes de descartar o formulário.

Eu tentei o código abaixo ao instanciar a forma ea propriedade dp.Top foi sempre 0, independentemente do dp.Width == 240

DisplayPicture dp = new DisplayPicture(ImageUrl);
dp.WindowState = FormWindowState.Normal;
dp.Left = dp.Width * -1;
dp.Top = (dp.Height / 2) - 2;
dp.Height = 4;
dp.ShowDialog();       

Dentro do formulário DisplayPicture eu também tenho o seguinte para tentar mover o formulário, mas como ele não está definindo a propriedade Top este código ainda não importa.

void t_Tick(object sender, EventArgs e)
{
    if (this.Left < 0)
        this.Left += 5;

    if (this.Left > -1)
    {
        this.Left = 0;
        if (this.Height < pictureBox1.ClientRectangle.Height)
        {
            this.Height += 4;
            this.Top -= 2;
        }

        if ((this.Left == 0) && (this.Top == 0))
            t.Enabled = false;

    }
}

Qualquer ajuda seria muito apreciada!

TIA

OneShot

Foi útil?

Solução

Para fazer isso, começar com um controle PictureBox que tem sua imagem carregada. Definir a altura a 4, a largura para a largura da sua forma, e (muito importante) definir o SizeMode do PictureBox para StretchImage .

A seguir, a posição do PictureBox para fora da tela, definindo Top a 0 e Esquerda para -Width. Coloque um controle Timer em seu formulário com um intervalo de 100 (ou qualquer outro), e ter o seu evento mover-se gradualmente a PictureBox para a direita até a sua propriedade esquerda é 0. Uma vez que você chegar a esse ponto, temos o evento timer aumentar gradualmente a altura até ele atinge a altura do formulário.

Você provavelmente vai ter que lidar com flicker, mas isso deve começar.

Update: Acabei de ler sua pergunta um pouco mais perto, e percebi que você realmente deseja mover o próprio formulário de fora da tela para tela cheia. Isso não é possível se você quiser o formulário inteiro (incluindo a barra de título na parte superior) para animar desta forma, mas você pode classificar de fazer isso definindo FormBorderStyle do formulário (ou eu acho que é chamado apenas de BorderStyle no Compact Framework) para Nenhum. Com o conjunto BorderStyle para nenhum, alterar a altura, largura, superior e esquerda propriedades vai realmente ter um efeito visível no formulário (embora a forma será sem fronteiras). Estas propriedades são de outra maneira completamente ignorado no Windows Mobile , que é provavelmente porque seu código não parecem estar fazendo nada.

Update 2: aqui é minha resposta a uma pergunta WM semelhante, o que pode ajudá-lo a fazer seu olhar da janela de animação como uma janela real.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top