айфон как обрезать половину эллипса - PullRequest
1 голос
/ 09 декабря 2011

Я нарисовал эллипс:

CGContextFillEllipseInRect(contextRef, CGRectMake(50, 50, 50, 128));

Но мне нужна только половина эллипса, есть ли способ обрезать другую половину?

1 Ответ

5 голосов
/ 09 декабря 2011

Перед вызовом метода рисования вы можете обрезать контекст для части эллипса:

CGContextSaveGState(contextRef);
BOOL onlyDrawTopHalf = YES;
CGFloat halfMultiplier = onlyDrawTopHalf ? -1.0 : 1.0;
CGRect ellipse = CGRectMake(50, 50, 50, 128);
CGRect clipRect = CGRectOffset(ellipse, 0, halfMultiplier * ellipse.size.height / 2);
CGContextClipToRect(contextRef, clipRect);
CGContextFillEllipseInRect(contextRef, ellipse);
// restore the context: removes the clipping
CGContextRestoreGState(contextRef);
...