5

我有一个应用程序在 C# 中使用 GDI+ 绘制了很多小矩形(大约 100 万个),并且性能......不太好。我知道构造很多Rectangle对象来传递它们Graphis.FillRectangle需要一些时间。Rectangle我也明白,如果s 逐帧变化,我无法避免这种情况,因为Rectangle它被设计为不可变的。因此,我的问题是:除非Rectangle必须假定所有 s 都是可见的,否则是否有可能提高此绘图调用的性能?

在此先感谢,克里斯托夫

4

1 回答 1

9

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

FillRectangles(Brush brush, Rectangle[] rects);

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

于 2012-04-20T12:25:39.653 回答