Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 点在圆角矩形内吗?_Ios_Uikit_Geometry - Fatal编程技术网

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上乱扔东西,我想看看我的代码会有多大变化。我已经提出了我的问题,这里是否有缺点,谢谢大家的帮助!