Pregunta

Me gustaría saber si es posible crear buenos efectos de formulario en el marco compacto.

Mi plan es que cuando un usuario selecciona una imagen en el formulario principal, se abre en un nuevo formulario, esto funciona actualmente. Lo que ahora quiero hacer es hacer que el formulario que contiene la imagen de tamaño completo se cargue desde el borde (izquierda o derecha) de la pantalla a unos 4 píxeles de altura y luego deslícelo a la vista. Una vez que el formulario esté completamente en la pantalla, expanda la altura hasta que alcance el máximo de la pantalla.

Al cerrar, me gustaría reducir la altura nuevamente a los 4 píxeles de alto y volver a deslizar el borde antes de desechar el formulario.

He intentado el siguiente código al crear instancias del formulario y la propiedad dp.Top siempre fue 0 independientemente de 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 del formulario DisplayPicture también tengo lo siguiente para intentar mover el formulario, pero como no está configurando la propiedad Top, este código aún no 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;

    }
}

¡Cualquier ayuda sería muy apreciada!

TIA

OneSHOT

¿Fue útil?

Solución

Para hacer esto, comience con un control PictureBox que tenga su imagen cargada. Establezca la Altura en 4, el Ancho en el ancho de su formulario y (muy importante) establezca el TamañoModo de PictureBox en StretchImage .

A continuación, coloque el PictureBox fuera de la pantalla configurando Top a 0 y Left a -Width. Coloque un control Timer en su formulario con un intervalo de 100 (o lo que sea), y haga que su evento mueva gradualmente el PictureBox hacia la derecha hasta que su propiedad Left sea 0. Una vez que llegue a ese punto, haga que el evento timer aumente gradualmente la Altura hasta alcanza la altura del formulario.

Probablemente tendrá que lidiar con el parpadeo, pero esto debería ayudarlo a comenzar.

Actualización: Acabo de leer su pregunta un poco más de cerca, y me di cuenta de que realmente desea mover el formulario en sí desde fuera de la pantalla a pantalla completa. Esto no es posible si desea que todo el formulario (incluida la barra de título en la parte superior) se anime de esta manera, pero puede hacerlo configurando el FormBorderStyle del formulario (o creo que simplemente se llama BorderStyle en Compact Framework) a ninguno. Con BorderStyle establecido en None, cambiar las propiedades Altura, Ancho, Superior e Izquierdo tendrá un efecto visible en el formulario (aunque el formulario no tendrá bordes). De lo contrario, estas propiedades se ignoran por completo en Windows Mobile , por lo que probablemente su código no parece estar haciendo nada.

Actualización 2: aquí está mi respuesta a una pregunta WM similar, que puede ayudarlo a hacer que su ventana animada se vea como una ventana real.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top