Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Duda Windows Forms Con Vs.net 03 Y C#

Iniciado por nsL, 16 de Febrero de 2006, 08:58:00 PM

« anterior - próximo »

zupervaca

 Yo actualmente prefiero no usar el doble bufer para evitar pintar lo que sea y luego pintar una imagen contra la vista del formulario, ademas asi no modifico el sistema de mensajes estandar, lo que hago para evitar repintados extraños y parpadeos es redifinir la funcion OnPaintBackground de esta manera

       /// <summary>Renderizar el fondo del control</summary>
       protected override void OnPaintBackground(PaintEventArgs e)
       {
           // En modo edicion obligamos pintar el fondo del control
           if (this.DesignMode)
           {
               base.OnPaintBackground(e);
           }
       }

Despues en la función paint pinto a mano lo que haga falta mirando el rectangulo de actualizacion que me pasa

Vicente

 Creo que lo que haces con el background es lo mismo que se consigue usando los flags que he puesto y que usa nsl... Pero no sabría asegurarlo al 100%

Un saludo!

Vicente

zupervaca

 Los flags ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint hacen eso exactamente (por lo menos eso creo), pero el flag del doble bufer crea un dispositivo de contexto oculto que es donde se renderiza todo y luego actualiza el dispositivo de contexto del formulario con el oculto, lo cual no me convencio, casi que prefiero optimizar el renderizado de las ventanas pintando lo justo evitando los parpadeos y ganar velocidad en el dibujado de los formularios.
Aunque esto que digo es una contradiccion por que en el sistema de skins que monte hace años en c++ precisamente hice un doble bufer para curarme en salud de los parpadeos, pero bueno tambien es que el grafista ponia montones de dibujos unos sobre otros :D






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.