猿问

在 C# winforms 中解决冗长的 onPaint 事件的正确方法?

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


浮云间
浏览 235回答 1
1回答

四季花海

您问题的答案在于双缓冲。您无需了解有关双缓冲的所有详细信息即可使用它。只需像下面一样将该属性设置为 true 即可在控件中启用它。 MyGraphPanelControl.DoubleBuffered = true;明显的缺点是内存使用,但它会大大增加在面板上绘制的东西的“速度”。就像计算机科学中的许多事情一样,您可以用内存换取速度,反之亦然。此外,从 Microsoft阅读本文将使您更深入地了解如何使用双缓冲。
随时随地看视频慕课网APP
我要回答