To solve flickering problem in WinForms when drawing multiple shapes, I decided to use GraphicsPath
do draw all shapes and then render using Graphics
. It works perfectly; drawing never flickers even if a high number of shapes are drawn.
panel.Paint += (sender, args) => {
var graphicsPath = new GraphicsPath(FillMode.Winding);
for (int i = 0; i < 10; i++)
{
graphicsPath.AddEllipse(0, i * 5, 20, 20);
}
args.Graphics.FillPath(new SolidBrush(Color.Red), graphicsPath);
However, in this case all ellipses are the same color. Drawing every ellipse using graphics.FillPath()
also causes flickering when shapes are redrawn (fot instance on Paint event).
Is there a way to draw each shape with a different color while continuing bulk drawing such as above one?