If you are developing a game in Windows Forms, you really need to override OnPaint and implement sprite painting on every frame, as opposed to moving the PictureBox controls in heavy weight.
You will find that you can get flicker regardless of DoubleBuffer if you use the approach you mentioned. However, using the entire drawing made in OnPaint, DoubleBuffer starts to work.
I did a quick search and found this interesting article about creating a game loop in Windows Forms using the OnPaint override. In particular, take a look at GameStateDrawer
, which does rendering directly in the graphics context.
source share