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如何剪掉椭圆的一半的主要内容,如果未能解决你的问题,请参考以下文章

如何让 UITabBar 在 iPhone X 上扩展到底部?

iPhone show 查看一半的时间

iOS14不打开这些功能,你的iPhone就废了一半

iOS14不打开这些功能,你的iPhone就废了一半

我不希望 TextView 的最后一个字被剪掉一半

iPhone X 卖不出去,苹果将产量削减一半,乔布斯十年梦碎