Лучший способ нарисовать несколько прямоугольников? - PullRequest
0 голосов
/ 03 декабря 2011

В моем проекте мне нужно нарисовать пару сотен прямоугольников, используя Quartz painting.У меня есть такой код

-(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 голосов
/ 09 января 2012

Более эффективно создать отдельный путь. Проверьте следующие функции, чтобы создать один путь с вашими прямоугольниками, тогда вы можете заполнить и обвести один и тот же путь вместо того, чтобы создавать его заново:

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

... а для производительности не забудьте кэшировать этот путь, если вы собираетесь рисовать его несколько раз!

...