1

The title pretty much says it. I have a panel inside of my form. I have lots of Shapes in the panel that bounce off of each other. The more shapes I have the worse the flickering is. After searching on this site for awhile I added this to the constructor

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

Then I found I should also add this

protected override CreateParams CreateParams
{
  get
  {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED (child control double-buffering)
    return cp;
  }
}

After I added this the screen flickered MUCH worse. It's not even fair to say it flickered. Most of the time it was just blank and every once in a while the shapes would flash briefly. My code to paint the shapes looks like this.

pnl.Refresh();
Graphics g = pnl.CreateGraphics();
for(int i = 0; i < numOfShapes; i++)
{
    Rectangle myRect = shapeList[i];
    g.FillRectangle(new SolidBrush(Color.Black), myRect);
}

edit:

I don't know why I can't get the last bit of code to look right. Sorry about that. I'm just refreshing the panel then looping through an array of rectangles and painting them to the panel

Tim Phan
  • 311
  • 1
  • 11
user2125899
  • 117
  • 1
  • 4
  • 9

0 Answers0