1

角丸四角形を描画する次のコードがあります。

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 内にあるかどうかをどのように判断できますか?

4

1 に答える 1

3

このように に直接CGContextRefビルドする代わりに、 としてビルドしてからUIBezierPathを使用できます-[UIBezierPath containsPoint:]

実際にパスをコンテキストにレンダリングする準備ができたら、次の方法で実行できます。

CGContextAddPath(ctx, [myBezierPath CGPath]);
于 2013-01-12T22:44:49.990 に答える