点是内圆角矩形?
问题描述:
我有这样的代码来绘制圆角矩形:点是内圆角矩形?
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);
}
我怎么能计算出,如果给定的CGPoint是我的矩形内,考虑圆角?
答
而是直接建入CGContextRef
这样的,你可以改为打造为UIBezierPath
,然后用-[UIBezierPath containsPoint:]
。
当你准备好实际呈现的路径进入的背景下,你可以这样做通过:
CGContextAddPath(ctx, [myBezierPath CGPath]);
这是伟大的,依然看着UIBezierPath,看看我能做到像'CGContextAddArcToPoint'无必须学习任何新的几何。 –
@Yar对于UIBezierPath不支持的东西,您可以访问它的'CGPath'属性,执行'CGMutablePathRef'操作,然后使用'+ bezierPathWithCGPath:'返回一个'UIBezierPath'对象。 – MaxGabriel
@MaxGabriel真棒。你能否做出答案?这是让我不再学习制作弧的新方法的好方法,这是我的首要目标。 此外,我很想看看我的代码改变了多少,如果我使用'CGMutablePathRef'而不是只是砰的东西到CGContext上。 –