Foros del Web » Programación para mayores de 30 ;) » .NET »

método System.Drawing.SizeF: ¿cómo disminuir escala correctamente?

Estas en el tema de método System.Drawing.SizeF: ¿cómo disminuir escala correctamente? en el foro de .NET en Foros del Web. Hola: Tengo un formulario de un tamaño determinado, que tiene un tamaño inicial de 240x320 pixels, de tal modo que el botón de maximizar es ...
  #1 (permalink)  
Antiguo 02/09/2009, 03:42
 
Fecha de Ingreso: octubre-2006
Mensajes: 53
Antigüedad: 17 años, 6 meses
Puntos: 0
método System.Drawing.SizeF: ¿cómo disminuir escala correctamente?

Hola:

Tengo un formulario de un tamaño determinado, que tiene un tamaño inicial de 240x320 pixels, de tal modo que el botón de maximizar es máximizar (no volver a su tamaño original).

Cuando utilizo el siguiente código en el evento resize del formulario, cuando hace el primer escalado de maximizado funciona correctamente:

this.Scale(new System.Drawing.SizeF(ClientSize.Width /anchoFormulario, ClientSize.Height / altoFormulario));
anchoFormulario = ClientSize.Width;
altoFormulario = ClientSize.Height;

altoFormulario y anchoFormulario son variables locales de formulario para conocer el ancho y alto antes del resize, para conocer el factor a aplicar.

Es decir, todos los controles aumentan en proporción y se colocan en la posición correcta. Todos los controloes tienen el anchor en top, left.

Sin embargo, cuando doy al botón de ventana para que vuelva a su tamaño original, el tamaño de los controles no cambia y el formulario tampoco vuelve a su tamaño original, sino que se queda muy grande.

Además, cuando se minimiza he notado que el método resize se ejecuta 6 o 7 veces, no una como cuando hago la primera maximinación. ¿Por qué puede ser?.

En resumen, me gustaría saber si hay alguna forma buena para aumenta el tamaño de los controles en proporción tanto cuando se hace grande la ventana como cuando se hace pequeña.

Se podría ir controloando el tamaño control a control, pero es mucho código cuando en teoría el método sizeF lo hace automáticamente.

Por cierto, uso c# 2008 Express.




Gracias.
Daimroc.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:34.