Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Proelbmas con Double Buffering

Iniciado por XÑA, 12 de Agosto de 2012, 09:35:42 PM

« anterior - próximo »

XÑA

Hola!!! Vereis tengo un problema con un control que no me permite hacer Double buffering y tengo un flickering de la muerte

Simplemente es un formulario que tiene un UserControl. Este User Control lo que hace es que en el evento MouseMove hace un Invalidate. En el Paint se dibuja una línea con la posición donde está el ratón. ( es para hacer un control de TimeLine)

    public partial class UserControl1 : UserControl
    {
        Point mousePos;

        public UserControl1()
        {
            InitializeComponent();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            int x = 0;

            for (x = 0; x < Width; x += 10)
            {
                g.DrawLine(Pens.Black, new Point(x, 0), new Point(x, Height));
            }

            x = mousePos.X;

            g.DrawLine(Pens.Red, new Point(x, 0), new Point(x, Height));
        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            mousePos = e.Location;

            panel1.Invalidate();
        }
    }


Bueno, pues el flickering es horrible!!  >:( Y el Control lo tengo indicado como que sea DoubleBuffered, pero, al estar dentro de otro form, no me hace ni caso!!!

Aquí tenéis el código, es terriblemente simple:

www.mallorcaaldia.com/FTP/TestInvalidate.rar

Gracias!!  ;)

bnl

¿Has probado poniendo
SetStyle(ControlStyles.OptimizedDoubleBuffer, true); ?

http://msdn.microsoft.com/en-us/library/3t7htc9c.aspx#Y200

Otra alternativa es implementarlo a mano, no es muy complicado. La idea es dibujar sobre un bitmap (obteniendo un graphics) y luego volcarlo en el control donde se quiera renderizar.
Este codigo esta en VB.NET pero es facilmente portable a C#
http://www.elguille.info/colabora/puntonet/bnlbnl_grafico.htm
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

XÑA








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.