标题几乎说明了。我的表格中有一个面板。我在面板中有很多形状互相反弹。我的形状越多,闪烁就越严重。在这个网站上搜索了一段时间后,我将其添加到构造函数
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint
| ControlStyles.DoubleBuffer, true);
然后我发现我也应该添加这个
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED (child control double-buffering)
return cp;
}
}
我加上这个后,屏幕闪烁得更厉害。说它闪烁是不公平的。大多数时候,它只是空白,每隔一段时间,形状就会短暂闪现。我绘制形状的代码看起来像这样。
pnl.Refresh();
Graphics g = pnl.CreateGraphics();
for(int i = 0; i < numOfShapes; i++)
{
Rectangle myRect = shapeList[i];
g.FillRectangle(new SolidBrush(Color.Black), myRect);
}
编辑:
我不知道为什么我不能让最后一点代码看起来正确。对于那个很抱歉。我只是刷新面板然后循环遍历一个矩形阵列并将它们绘制到面板