Ios 点在圆角矩形内吗?
我有以下代码来绘制圆角矩形:Ios 点在圆角矩形内吗?,ios,uikit,geometry,Ios,Uikit,Geometry,我有以下代码来绘制圆角矩形: void ContextAddRoundedRect(CGContextRef ctx, CGRect rect, CGFloat radius) { CGFloat minX = CGRectGetMinX(rect); CGFloat maxX = CGRectGetMaxX(rect); CGFloat minY = CGRectGetMinY(rect); CGFloat maxY = CGRectGetMaxY(rect);
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是否在我的rect中?您可以将其构建为一个,然后使用
-[UIBezierPath containsPoint:][/code>而不是像这样直接构建到CGContextRef
中
当您准备好实际将路径渲染到上下文中时,可以通过以下方式执行此操作:
CGContextAddPath(ctx, [myBezierPath CGPath]);
这很好,仍然在查看UIBezierPath,看看我是否可以在不学习任何新几何体的情况下执行类似于CGContextAddArcToPoint
的操作。@对于UIBezierPath不支持的内容,您可以访问它的CGPath
属性,执行CGMutablePathRef
操作,然后使用+bezierpath with cgpath:
返回到UIBezierPath
对象。@MaxGabriel太棒了。你能回答这个问题吗?这是一种很好的方法,可以让我不去学习制作圆弧的新方法,这是我的首要目标。另外,如果我使用CGMutablePathRef
,而不是仅仅在CGContext上乱扔东西,我想看看我的代码会有多大变化。我已经提出了我的问题,这里是否有缺点,谢谢大家的帮助!