C#只重绘前景

时间:2016-09-01 10:26:43

标签: c# winforms drawing draw

我正在从事大学项目(模拟)工作,需要将大量行和对象绘制到自​​定义UserControl。我目前的方法是使用Invalidate()重新绘制每个tick / update循环的所有内容。但它确实需要大量的时间来绘制(这导致非常低的FPS),尤其是当我需要绘制数千行和矩形时。

那么我怎样才能重新绘制在每个更新循环中移动的特定(一组)对象,并在需要时仅重新绘制其余的(很少更新的对象)?还是有其他方法可以优化我在这个问题中的绘制方式吗?

1 个答案:

答案 0 :(得分:0)

我的想法如下:

将控件绘制到位图(或其他图像格式)上一次,然后保存该图像。然后在您的控件上显示该位图。 (假设您使用可以执行此操作的控件,即ImageBox,不确定最适合的控件。

每当您更新图形时,请跟踪控件的哪些部分可能已过时,然后仅重绘这些部分(仅绘制触摸该部分的对象),并从保存的图像中复制其他部分。

显示(并保存)新图像。