在GDI +中绘制了很多矩形

时间:2012-04-20 12:24:17

标签: c# performance gdi+

我有一个应用程序在C#中使用GDI +绘制了很多小矩形(大约100万个),性能......不太好。我知道构建大量Rectangle个对象以将它们传递给Graphis.FillRectangle需要一些时间。我也理解,如果Rectangle从一帧到另一帧发生变化,我无法避免这种情况,因为Rectangle被设计为不可变的。因此,我的问题是:是否有可能改善此绘图调用的性能,除非必须假定所有Rectangle都可见?

提前致谢, 克里斯托弗

1 个答案:

答案 0 :(得分:9)

我建议您使用调用的数组变体:

FillRectangles(Brush brush, Rectangle[] rects);

如果这对您不起作用,因为您需要不同的画笔等,您应该按状态(画笔)对基元进行分组,并在每个画面中绘制每个数组。快速测试显示性能至少是三倍,即单独绘制的300K矩形感觉像一次性绘制的1M矩形一样不稳定。