Cómo eliminar el parpadeo en Windows.Formas de control personalizado cuando el desplazamiento?

StackOverflow https://stackoverflow.com/questions/64272

  •  09-06-2019
  •  | 
  •  

Pregunta

Quiero crear un control personalizado en C#.Pero cada vez que me tienen completamente redibujado de mi control, parpadea, aunque yo uso el doble búfer (dibujo a una Imagen de la primera, y la fusión que).

¿Cómo puedo eliminar el parpadeo cuando tengo completamente redibujar?

¿Fue útil?

Solución

Usted podría tratar de poner lo siguiente en su constructor después de la InitiliseComponent llamada.

SetStyle(ControlStyles.OptimizedDoubleBuffer | 
         ControlStyles.UserPaint |
         ControlStyles.AllPaintingInWmPaint, true);

EDITAR:

Si usted está dando a este un ir, si se puede, retire su propio doble búfer de código y sólo tiene el control de dibujarse a sí mismo en respuesta a la correspondiente a los métodos virtuales que se llama.

Otros consejos

Me sacó esto desde un programa de C#.Otros carteles tener errores de sintaxis y claramente copiado de C++ en lugar de C#

SetStyle(ControlStyles.OptimizedDoubleBuffer | 
                        ControlStyles.UserPaint |
                        ControlStyles.AllPaintingInWmPaint, true);

Puede ser lo suficientemente bueno como para solo llamar

SetStyle(ControlStyles::UserPaint | ControlStyles::AllDrawingInWmPaint, true);

El parpadeo que se están viendo más probable es debido a que Windows se dibuja el fondo de el control de la primera (a través de WM_ERASEBKGND), luego le pregunta a su control para hacer lo que el dibujo que hay que hacer (a través de WM_PAINT).Deshabilitando el fondo de la pintura y hacer todo tipo de pintura en la OnPaint anular puede eliminar el problema en el 99% de los casos sin la necesidad de utilizar toda la memoria necesaria para el doble búfer.

Dices que has probado el doble búfer, pero luego te dicen que el dibujo a una Imagen de la primera y la fusión que.¿Has probado la configuración de DoubleBuffered = true en el constructor, en lugar de hacerlo usted mismo con una Imagen?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top