我有这个代码来绘制圆角矩形:
void ContextAddRoundedRect(CGContextRef ctx, CGRect rect, CGFloat radius) {
CGFloat minX = CGRectGetMinX(rect);
CGFloat maxX = CGRectGetMaxX(rect);
CGFloat minY = CGRectGetMinY(rect);
CGFloat maxY = CGRectGetMaxY(rect);
CGContextMoveToPoint(ctx, minX + radius, minY);
CGContextAddArcToPoint(ctx, maxX, minY, maxX, minY + radius, radius);
CGContextAddArcToPoint(ctx, maxX, maxY, maxX - radius, maxY, radius);
CGContextAddArcToPoint(ctx, minX, maxY, minX, maxY - radius, radius);
CGContextAddArcToPoint(ctx, minX, minY, minX + radius, minY, radius);
}
我要将其转换为使用
CGMutablePathRef
对于绘图,因为那样我可以使用 -[UIBezierPath containsPoint:]
(首先使用 +bezierPathWithCGPath:
,如 the comments and answer here 中所述。)使用
CGMutablePathRef
是否有任何严重/已知的缺点?而不是直接在 CGContext 上绘制? 我的猜测是它不是首发,但也许我错过了一些东西。(我知道我必须释放它)
最佳答案
只需使用 +[UIBezierPath bezierPathWithRoundedRect:cornerRadius:]
省去所有的麻烦。如果您真的需要CGPathRef
从它,然后得到 CGPath
属性(property)。
除非您每秒执行此操作数千次,否则它不太可能明显变慢或占用大量内存。
关于ios - 使用 CGMutablePathRef 的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14299140/