Paint de un Windows Form

16/08/2003 - 22:12 por Miguel | Informe spam
Hola:

Me gustaría saber si os habeís fijado en la carga de los formularios con
varios controles (bastantes si es posible), una ficha maestra o algo por el
estilo dentro de un MDI. En la carga del formulario, sin escribirle código
en el constructor ni en eventos de pintado, el formulario hijo hace unos
efectos "poco elegantes" en el momento del pintado del formulario, es decir,
no realiza un PANTALLAZO como se puede observar en otras aplicaciones dentro
del mismo entorno (ordenador, S.O., etc). En cualquier caso, el ordenador de
testeo se trata de unas características nada despreciables (PIV 2,4, 1Gb,
128Mb Video, ).

En una de las últimas pruebas, lo único que se le ha puesto al formulario
hijo es la propiedad:
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

la carga se hace:

if( _formPacientes == null )

_formPacientes = new FormPacientes();

_formPacientes.MdiParent = this;

_formPacientes.Show();

_formPacientes.BringToFront();

Pues aún con este, las "etapas" de carga del formulario son visibles al
usuario, incluso he podido capturar la imagen "a medio cargar" con una
impresión de pantalla. (disponible si la quereís)



Bueno pues me gustaría saber si os pasa igual y en ese caso, si conoceís
algún método para eliminar este efecto.

Gracias

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
17/08/2003 - 13:50 | Informe spam
Miguel,

Activa la doble buferización y otras características avanzadas de los
formularios, que pueden ayudar en esto (a costa de consumir más memoria).
Por ejemplo, prueba esto en el constructor de la clase hija:

this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint, true);
this.UpdateStyles();

Saludos,

Octavio

"Miguel" escribió en el mensaje
news:%
Hola:

Me gustaría saber si os habeís fijado en la carga de los formularios


con
varios controles (bastantes si es posible), una ficha maestra o algo por


el
estilo dentro de un MDI. En la carga del formulario, sin escribirle código
en el constructor ni en eventos de pintado, el formulario hijo hace unos
efectos "poco elegantes" en el momento del pintado del formulario, es


decir,
no realiza un PANTALLAZO como se puede observar en otras aplicaciones


dentro
del mismo entorno (ordenador, S.O., etc). En cualquier caso, el ordenador


de
testeo se trata de unas características nada despreciables (PIV 2,4, 1Gb,
128Mb Video, ).

En una de las últimas pruebas, lo único que se le ha puesto al formulario
hijo es la propiedad:
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

la carga se hace:

if( _formPacientes == null )

_formPacientes = new FormPacientes();

_formPacientes.MdiParent = this;

_formPacientes.Show();

_formPacientes.BringToFront();

Pues aún con este, las "etapas" de carga del formulario son visibles al
usuario, incluso he podido capturar la imagen "a medio cargar" con una
impresión de pantalla. (disponible si la quereís)



Bueno pues me gustaría saber si os pasa igual y en ese caso, si conoceís
algún método para eliminar este efecto.

Gracias


Respuesta Responder a este mensaje
#2 Miguel
17/08/2003 - 20:15 | Informe spam
Muchas gracias Octavio,

tengo que hacer algunas pruebas más, pero en principio la mejoría es leve,
no sé si es posible cargarlo todo antes y depués mostrarlo, o algo por el
estilo (aunque eso se supone que hace el doblebuffer)
. Por otro lado, tengo un problemilla con el toolbar que es "Flat" y parece
que esto hace que envíe un mensaje de ventana WM_ERASEBKGRND y lo pinte
transparente. En el momento que cambio la propiedad a normal, todo funciona
bien. Bueno voy a ver si lo soluciono.
Por cierto, creo que puedes conocer el control Image Express de Pegasus, y
es este un de los que me dan más problemas relacionados con este efecto
"Paint". Tengo varios controles de este tipo en una venta, y además de
pintarse con ese "efecto", al hacer el close, la ventana empieza a quitar
uno a uno de los controles ¿?

En fín, muchas gracias de nuevo.


"Octavio Hernandez" escribió en el mensaje
news:
Miguel,

Activa la doble buferización y otras características avanzadas de los
formularios, que pueden ayudar en esto (a costa de consumir más memoria).
Por ejemplo, prueba esto en el constructor de la clase hija:

this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint, true);
this.UpdateStyles();

Saludos,

Octavio

"Miguel" escribió en el mensaje
news:%
> Hola:
>
> Me gustaría saber si os habeís fijado en la carga de los formularios
con
> varios controles (bastantes si es posible), una ficha maestra o algo por
el
> estilo dentro de un MDI. En la carga del formulario, sin escribirle


código
> en el constructor ni en eventos de pintado, el formulario hijo hace unos
> efectos "poco elegantes" en el momento del pintado del formulario, es
decir,
> no realiza un PANTALLAZO como se puede observar en otras aplicaciones
dentro
> del mismo entorno (ordenador, S.O., etc). En cualquier caso, el


ordenador
de
> testeo se trata de unas características nada despreciables (PIV 2,4,


1Gb,
> 128Mb Video, ).
>
> En una de las últimas pruebas, lo único que se le ha puesto al


formulario
> hijo es la propiedad:
> this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
>
> la carga se hace:
>
> if( _formPacientes == null )
>
> _formPacientes = new FormPacientes();
>
> _formPacientes.MdiParent = this;
>
> _formPacientes.Show();
>
> _formPacientes.BringToFront();
>
> Pues aún con este, las "etapas" de carga del formulario son visibles al
> usuario, incluso he podido capturar la imagen "a medio cargar" con una
> impresión de pantalla. (disponible si la quereís)
>
>
>
> Bueno pues me gustaría saber si os pasa igual y en ese caso, si conoceís
> algún método para eliminar este efecto.
>
> Gracias
>
>


Respuesta Responder a este mensaje
#3 Jose Antonio
18/08/2003 - 22:26 | Informe spam
Lo desastroso del paint de Net, es problema de la cantidad de codigo
intermedio que se utiliza para pintar, simplemente se resuelve programando
directamente con las api de windows, el unico proposito por el que veo que
microsoft lo haya hecho tan mal en el pintado de formularios y controles, es
que algun dia el net llegue a ser nativo, sino no tiene otra explicación, yo
como todos los que hemos utilizado c++ para windows, nos desazonamos cuando
vemos empezar a rodar un programa en .net, con todas las marivillas que se
le han añadido y lo que más se ve lo han dejado a medias.


Saludos.

"Miguel" escribió en el mensaje
news:%
Hola:

Me gustaría saber si os habeís fijado en la carga de los formularios


con
varios controles (bastantes si es posible), una ficha maestra o algo por


el
estilo dentro de un MDI. En la carga del formulario, sin escribirle código
en el constructor ni en eventos de pintado, el formulario hijo hace unos
efectos "poco elegantes" en el momento del pintado del formulario, es


decir,
no realiza un PANTALLAZO como se puede observar en otras aplicaciones


dentro
del mismo entorno (ordenador, S.O., etc). En cualquier caso, el ordenador


de
testeo se trata de unas características nada despreciables (PIV 2,4, 1Gb,
128Mb Video, ).

En una de las últimas pruebas, lo único que se le ha puesto al formulario
hijo es la propiedad:
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

la carga se hace:

if( _formPacientes == null )

_formPacientes = new FormPacientes();

_formPacientes.MdiParent = this;

_formPacientes.Show();

_formPacientes.BringToFront();

Pues aún con este, las "etapas" de carga del formulario son visibles al
usuario, incluso he podido capturar la imagen "a medio cargar" con una
impresión de pantalla. (disponible si la quereís)



Bueno pues me gustaría saber si os pasa igual y en ese caso, si conoceís
algún método para eliminar este efecto.

Gracias


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida