iPhone如何剪掉椭圆的一半
Posted
技术标签:
【中文标题】iPhone如何剪掉椭圆的一半【英文标题】:iPhone how to clip half of the ellipse 【发布时间】:2011-12-09 17:13:53 【问题描述】:我画了椭圆:
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);
【讨论】:
解决了我一半的问题。现在在另一边,我也想要半个椭圆(不同于第一个),但是再次使用你的代码没有帮助,那个新的椭圆永远不会显示。我只是把bool改成NO,还有一些椭圆的参数。 我已经更新了代码。它现在在绘制后恢复上下文的状态。这有帮助吗? 这是我真正需要的,谢谢。你知道如何裁剪看起来像新月的区域吗?两个椭圆,一个小一个,大一个,然后从大的切小一个?这真的可能要求太多了...... 您可以使用任何路径来剪辑上下文。只需为上下文创建一个当前路径,然后调用CGContextClip
。查看有关剪切路径的文档:CGContextClip link以上是关于iPhone如何剪掉椭圆的一半的主要内容,如果未能解决你的问题,请参考以下文章