绘制多个矩形的最佳方法?

时间:2011-12-03 07:48:48

标签: ios5 quartz-graphics

在我的项目中,我需要使用石英绘画绘制几百个矩形。我确实有这样的代码

-(void)RenderRectangles:(NSArray*)rectangles
                        fillColor:(UIColor*)fillColor 
                    strokeColor:(UIColor*)strokeColor 
            strokeThickness:(float)strokeThickness;
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    UIGraphicsPushContext(context);

    CGContextSetStrokeColorWithColor(context, [strokeColor CGColor]);
    CGContextSetLineWidth(context, strokeThickness);

    for (NSValue *vRect in rectangles) {
    CGContextAddRect(context, [vRect CGRectValue]);
    }
    CGContextStrokePath(context);

    CGContextSetFillColorWithColor(context, [fillColor CGColor]);
    for (NSValue *vRect in rectangles) {
    CGContextFillRect(context, [vRect CGRectValue]);
    }

    UIGraphicsPopContext();
}

它工作正常,但我只是想知道是否可以只使用一个循环来做到这一点?或者有更好的方法来描边和填充矩形集合吗?

THX

1 个答案:

答案 0 :(得分:0)

创建单个路径更有效。查看以下函数以使用矩形创建单个路径,然后您可以填充并描绘相同的路径,而不需要重新创建它:

CGPathCreateMutable()
CGPathAddRect()/CGPathAddRects()
CGContextAddPath()

...并且为了提高性能,请记住如果要多次绘制它,请缓存此路径!