我有一个应用程序在C#中使用GDI +绘制了很多小矩形(大约100万个),性能......不太好。我知道构建大量Rectangle
个对象以将它们传递给Graphis.FillRectangle
需要一些时间。我也理解,如果Rectangle
从一帧到另一帧发生变化,我无法避免这种情况,因为Rectangle
被设计为不可变的。因此,我的问题是:是否有可能改善此绘图调用的性能,除非必须假定所有Rectangle
都可见?
提前致谢, 克里斯托弗
答案 0 :(得分:9)
我建议您使用调用的数组变体:
FillRectangles(Brush brush, Rectangle[] rects);
如果这对您不起作用,因为您需要不同的画笔等,您应该按状态(画笔)对基元进行分组,并在每个画面中绘制每个数组。快速测试显示性能至少是三倍,即单独绘制的300K矩形感觉像一次性绘制的1M矩形一样不稳定。