Айфон как обрезать половину эллипса
Я нарисовал эллипс:
CGContextFillEllipseInRect(contextRef, CGRectMake(50, 50, 50, 128));
Но мне нужна только половина эллипса, есть ли способ обрезать другую половину?
1 ответ
Решение
Перед вызовом метода рисования вы можете закрепить контекст на части эллипса:
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);