Panel Double buffering VB.NET and C# - Flicker Free

Posted by VIJI Monday, April 19, 2010

I faced a problem when loading background image in the panel. It used to flicker a lot. I thought of double buffering concept. But there is no in-built double buffering property for panel.

All what I did is to write a class which inherits from Panel Class, and in the constructor  set the DoubleBuffered to true and set the appropriate control styles.

VB.NET Code

Public Class DoubleBufferPanel

Inherits Panel


Public Sub New()


Me.DoubleBuffered = True

SetStyle(ControlStyles.AllPaintingInWmPaint Or _

ControlStyles.DoubleBuffer Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)

UpdateStyles()


End Sub
End Class

 
After building the project, we should be able to see the DoubleBufferPanel component in the ToolBox.

Double buffer Panel


Then drag and drop the panel  and used it. The problem is solved. It's so simple.

C# Code

public class DoubleBufferPanel : Panel
{


public DoubleBufferPanel()
{


// Set the value of the double-buffering style bits to true.
   this.DoubleBuffered = true;



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


    this.UpdateStyles();


}


}

4 Responses to Panel Double buffering VB.NET and C# - Flicker Free

  1. Carrigan Says:
  2. How come I get a 'no source code available' tab and my application breaks?

     
  3. Anonymous Says:
  4. a great thread ;) thank you sooo much!!!

     
  5. Anonymous Says:
  6. Thanks for this.

     
  7. Anonymous Says:
  8. You have NO IDEA of how much you've helped me out by sharing this... kudos!

     

Post a Comment