为解决WinForms中绘制多个形状时出现的闪烁问题,我决定使用GraphicsPath
绘制所有形状,然后使用Graphics
进行渲染。它运作完美;即使绘制了大量形状,绘图也不会闪烁。
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);
但是,在这种情况下,所有的椭圆都是相同的颜色。使用graphics.FillPath()
绘制每个椭圆时,也会在重新绘制形状时引起闪烁(在Paint事件上出现实例)。
有没有办法在继续诸如上图那样的批量绘制时以不同的颜色绘制每种形状?