2011-12-03 71 views
0

在我的項目中,我需要使用Quartz繪畫來繪製幾百個矩形。我確實有這樣的代碼最好的方法來繪製多個矩形?

-(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

回答

0

創建單個路徑效率更高。看看下面的函數來創建與矩形的單一路徑,那麼你可以填充和筆觸相同的路徑,而不是需要重新創建:

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

...和性能,記得緩存,如果這條道路你會多次繪製它!

+0

這是很好的知道。謝謝 – Eugen