none
¿Cómo mantengo el Aspect Ratio del control? RRS feed

  • Pregunta

  • Hola!

    Tengo un problema con el aspect ratio de un custom control. Tengo metidos varios storyboards con datos bastante concretos para un determinado aspect ratio y me gustaría que si cambio el tamaño de su contenedor se me adapte, pero manteniendo su aspect ratio, es decir, que si me sobra espacio por algún lado da igual.

    He probado con el evento size_changed, pero no consigo muy buenos resultados.

    Saludos!
    lunes, 27 de octubre de 2008 10:47

Todas las respuestas

  • utiliza el evento resize del form para disparar el resize de los demas controles, por otro lado a cada control debes calcularle el aspect ratio correspondiente de tal forma que con base en una de las dimensiones(horizontal o vertical) puedas hallar el tamaño asociado a la otra.

    lunes, 27 de octubre de 2008 13:38
    Moderador
  • Hola,

    se me ha olvidado comentar que estoy trabajando con wpf, no con forms.
    He creado un custom control (no user control) al cual se le define un template, dentro del cual tengo toda su estructura y storyboards. Tengo diferentes grids donde voy asignando y quitando contenidos UIElements que me pasan a través de variables públicas.
    El conjunto en sí es lo que quiero que mantenga el aspect ratio. He probado con el evento size_changed que tiene el control, pero resulta que entra el principio y se me ajusta el tamaño del control, pero cuando hago más grande o más pequeña la ventana, el control se queda con un tamaño fijo y no se redimensiona.

    Supongo que debo hacer algo mal, pq si en el procedimiento de size_changed no pongo nada, cada vez que toco el tamaño de la ventana entra en el procedimiento.

    Lo que tengo es algo así:


    Code Snippet

    private void Rotator4_3_SizeChanged(object sender, SizeChangedEventArgs e)  

    {

     double wi = e.NewSize.Width;
    double he = e.NewSize.Height;
    double temp = (wi / 4) * 3;


    if (temp > he)

                {
                    this.Width = (he / 3) * 4;
                }
                else if (temp < he)
                {
                this.Height = temp;
                }

    }



    Se ve que llega a poner un tamaño fijo y ahí se queda...

    Saludos!
    lunes, 27 de octubre de 2008 14:28