我在 C# 中有一个自定义控件。我注意到调用Refresh
比我想要的慢得多(大约 0.1 毫秒),即使我有一个空RePaint
函数。基本上,我的应用程序处理一个网格,并一个一个地刷新每个网格单元。这种相当低效的行为是设计使然。启用后,我希望能够实际查看每个处理步骤所做的工作,并且每个步骤最终只会更改一个单元格。切换双缓冲没有太大区别。
任何人都可以提供任何建议吗?
目前,我想出的最佳改进是将我Refresh
的呼叫替换为对Refresh2
. 后一个函数是 的精确副本Repaint
,除了在顶部添加两行Graphics g = Graphics.FromHwnd(this.Handle); g.Clear(BackColor);
并替换e.Graphics
为g
. 我怀疑这有一些缺点,但它确实将绘图速度减半。请注意,我正在使用的控件没有子组件,因此验证之类的事情并没有那么重要。