适当的方式围绕C#winforms中长时间的onPaint事件?

时间:2018-05-29 14:06:12

标签: c# winforms

我目前正在开发一个C#winforms图形应用程序。为了达到目的,我的图形控件的Paint事件处理程序必须绘制数千个点,这可能需要几秒钟。在此期间,应用程序被冻结。我的目标如下:如果用户在绘制旧数据时更改了要绘制的数据,那么它将在绘制旧数据并开始绘制新数据的过程中停止。这样做的正确方法是什么,或者这是我完全不知道的其他事情?我试图让我的问题尽可能清楚。

1 个答案:

答案 0 :(得分:1)

问题的答案在于双重缓冲。您无需了解有关双缓冲的所有详细信息即可使用它。只需将属性设置为true(如下所示)即可在控件中启用它。

 MyGraphPanelControl.DoubleBuffered = true;

明显的缺点是内存使用率,但它将大大提高面板上绘制内容的“速度”。就像计算机科学中的许多事情一样,您会以内存换取速度,反之亦然。

此外,阅读Microsoft的this可以使您更深入地了解如何使用双重缓冲。