none
Problemas escalado de la aplicacion en diferentes resoluciones RRS feed

  • Pregunta

  • Muy buenas, ¿Cuál es la formula para no tener problemas de escalado en las aplicaciones de Windows 8 en el desarrollo de estas? por que estoy teniendo muchos problemas con el asunto del escalado de la pantalla, yo por ej uso un monitor de 22" en 1680x1050 si le doy a debug x86 por ej. No hay manera de que escale bien en mi resolución, yo a la resolución en la que desarrollo las apps es en la que viene por defecto que seria 1366x768, si simulo la ejecución del código en las distintas resoluciones uno se da cuenta de que no escala bien en las resoluciones altas por ej, esto si me pudieran responder lo antes posible, ¿Dónde esta explicado al detalle lo del escalado? para hacerlo lo mejor posible y asi que no exista este problema.

    http://img651.imageshack.us/img651/1957/1061366x768.png

    http://img266.imageshack.us/img266/6899/1062560x1440.png

    http://img69.imageshack.us/img69/3667/231920x1080.png

    aquí teneis 3 imágenes yo no  tengo ni idea ni siquiera de donde mirarlo y me esta quemando esto del escalado que me hace falta veo que es algo complicado sin embargo en todos los ejemplos de Microsoft no he visto problemas de escalado, ¿Cuál es la  técnica para que no haya problemas?, saludos.

    lunes, 10 de diciembre de 2012 13:26

Todas las respuestas

  • Prueba con esto:

    <Viewbox Stretch="Fill">

    </Viebox>

    Como esto me funciona bien. Tiene que poner el contenido en el medio.

    Un saludo


    Elbrinner

    martes, 11 de diciembre de 2012 15:58
  • Eh creo que no me entendistes la pregunta o la exprese mal seguramente en realidad lo que me pasa esta explicado por aquí pero aquí son muy escuetos explicándolo y claro tampoco en un libro que tengo en PDF lo explican bien

    http://msdn.microsoft.com/es-es/library/windows/apps/xaml/Hh465337(v=win.10).aspx

    Esto es justamente lo que me pasa que la posición de los objetos cambia y lo que no quiero es que cambie la posición, con el cambio de resolución, gracias.

    jueves, 13 de diciembre de 2012 9:33
  • Supongo que lo que tienes es una imagen de fondo rescalada y unos controles flotando. Lo que puedes hacer es calcular la posición y el tamaño de los controles de texto según la resolución de la pantalla al iniciar el programa o meter esos controles dentro de un contenedor Canvas y reformular el diseño de las imágenes de fondo. 
    martes, 18 de diciembre de 2012 15:37
  • ¿Cómo calculo la posición de los controles y el tamaño de los controles según la resolución de pantalla? eso como se haría es una solución que es posible hacerla ten en cuenta que la posición de los controles según la resolución y el tamaño de pantalla varia por eso no me parece mala idea pero claro, no solo se debe ver bien en las pantallas según el simulador debe verse mas o menos bien en todas las pantallas.
    jueves, 20 de diciembre de 2012 10:54
  • Esto la verdad es que no te he contestado antes, por que no entiendo la respuesta, gracias.
    jueves, 20 de diciembre de 2012 11:01
  • Para recalcular el tamaño y posición de los controles debes hacer la siguiente operación:

    Tener los valores de ancho y alto con el que se diseñó el formulario (por ejemplo, lo diseñaste a 1000 ancho x 500 alto).

    Averiguar en tiempo de ejecución el ancho y alto de la resolución actual (por ejemplo 1200 ancho x 800 alto).

    Dividirlos y obtener un factor de transformación:

    1200 / 1000 = 1.2

    800 / 500 = 1.6

    Ahora deberás aplicar a cada control estos factores. Es decir, cada control deberá ser 1.2 veces más ancho (Propiedad Width) y 1.6 veces más alto (Propiedad Height). Además tendrás que moverlos para que ocupen la posición que les corresponde en la nueva resolución (Propiedad Left = Left*1.2 y Top = Top*1.6)

    Esto lo puedes automatizar en un bucle que lo haga para cada control, pasándole tu la lista de controles y lo debes llamar en el evento OnLoaded de la vista xaml donde tengas los controles:

    private void Grid_Loaded_1(object sender, RoutedEventArgs e) { var r = Window.Current.Bounds; var ancho = 1000; var alto = 800; var factor_ancho = r.Width / ancho; var factor_alto = r.Height / alto;

    // aquí metes todos los controles que tengas en el formulario. Para ello tendrás que ponerles nombres en el archivo xaml usando la etiqueta x:Name="nombre" var controles = new List<Windows.UI.Xaml.Controls.ContentControl>() { boton1, texto1, campo1, ... }; foreach (var c in controles) { c.Margin = new Thickness { Left = c.Margin.Left * factor_ancho, Top = c.Margin.Top * factor_alto }; c.Width = c.ActualWidth * factor_ancho; c.Height = c.ActualHeight * factor_alto; } }


    Aunque este método funcione. Yo te recomendaría que te replantearas el diseño de tu aplicación, que no es muy Windows Moder UI que digamos.

    Espero que te haya ayudado.

    Saludos cordiales.

    sábado, 22 de diciembre de 2012 14:50
  • Ya pero si uno quisiera hacer este mismo diseño utilizando las herramientas de Modern UI ¿Cómo se podría hacer? ese diseño mismo se podría hacer utilizando Blend para visual studo 2012, que es la herramienta de diseño, ¿hay videos donde expliquen como usarlo?, saludos.
    domingo, 23 de diciembre de 2012 12:36