[英]Proper way around lengthy onPaint event in C# winforms?
我目前正在开发C#winforms图形应用程序。 为了弄清楚这一点,我的图形控件的Paint事件处理程序必须绘制成千上万的点,这可能需要几秒钟的时间。 在此期间,应用程序被冻结。 我的目标是:如果用户在绘制较旧的数据时更改了要绘制的数据,则它将在绘制较旧的数据的过程中停止并开始绘制新的数据。 这样做的正确方法是什么?或者我完全不知道这是什么? 我试图使我的问题尽可能清楚。
您的问题的答案在于双重缓冲。 您无需了解有关双缓冲的所有详细信息即可使用它。 只需将属性设置为true(如下所示)即可在控件中启用它。
MyGraphPanelControl.DoubleBuffered = true;
明显的缺点是内存使用率,但它将大大提高面板上绘制内容的“速度”。 就像计算机科学中的许多事情一样,您会以内存换取速度,反之亦然。
此外,从Microsoft阅读此内容将使您更深入地了解如何使用Double Buffering。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.