0

我有一个路径的“调色板”,我会画很多次;也许100。

我想在这样的指定位置绘制这些:

CGPathRef foo = ...
CGPathRef bar = ...
// do this dozens of times at differing points
[self draw:context path:foo atX:100 andY:50];
[self draw:context path:bar atX:200 andY:50];

我现在做的是翻译。它有效,但我不确定这是性能最高的解决方案。像这样的东西:

- (CGRect) draw:(CGContextRef) context path:(CGPathRef) path atX:(CGFloat) x andY:   (CGFloat)y
{
    CGContextSaveGState(context);
    CGContextTranslateCTM(context, x, y);
    CGRect pathBoundingRect = CGPathGetBoundingBox(path);
    CGContextSetFillColorWithColor(context, drawColor);
    CGContextAddPath(context, path);
    CGContextDrawPath(context, kCGPathFill);
    CGContextRestoreGState(context);
    return pathBoundingRect;
}

你有什么改进的建议吗?

4

1 回答 1

0

如果它们移动,在其自己的 UIView 中绘制每一个可能会快得多(所以一开始,它们都是相同的),并定位视图本身。

这样,(视图的)转换将在 GPU 而不是 CPU 上自动完成,并且drawRect:只需要为每个路径对象调用一次。

于 2012-06-30T12:20:33.197 回答