我目前正在开发一个C#winforms图形应用程序。为了达到目的,我的图形控件的Paint事件处理程序必须绘制数千个点,这可能需要几秒钟。在此期间,应用程序被冻结。我的目标如下:如果用户在绘制旧数据时更改了要绘制的数据,那么它将在绘制旧数据并开始绘制新数据的过程中停止。这样做的正确方法是什么,或者这是我完全不知道的其他事情?我试图让我的问题尽可能清楚。
答案 0 :(得分:1)
问题的答案在于双重缓冲。您无需了解有关双缓冲的所有详细信息即可使用它。只需将属性设置为true(如下所示)即可在控件中启用它。
MyGraphPanelControl.DoubleBuffered = true;
明显的缺点是内存使用率,但它将大大提高面板上绘制内容的“速度”。就像计算机科学中的许多事情一样,您会以内存换取速度,反之亦然。
此外,阅读Microsoft的this可以使您更深入地了解如何使用双重缓冲。