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