我正在从事大学项目(模拟)工作,需要将大量行和对象绘制到自定义UserControl
。我目前的方法是使用Invalidate()
重新绘制每个tick / update循环的所有内容。但它确实需要大量的时间来绘制(这导致非常低的FPS),尤其是当我需要绘制数千行和矩形时。
那么我怎样才能重新绘制在每个更新循环中移动的特定(一组)对象,并在需要时仅重新绘制其余的(很少更新的对象)?还是有其他方法可以优化我在这个问题中的绘制方式吗?
答案 0 :(得分:0)
我的想法如下:
将控件绘制到位图(或其他图像格式)上一次,然后保存该图像。然后在您的控件上显示该位图。 (假设您使用可以执行此操作的控件,即ImageBox
,不确定最适合的控件。
每当您更新图形时,请跟踪控件的哪些部分可能已过时,然后仅重绘这些部分(仅绘制触摸该部分的对象),并从保存的图像中复制其他部分。
显示(并保存)新图像。