【问题标题】:iPhone how to clip half of the ellipseiPhone如何剪掉椭圆的一半
【发布时间】:2011-12-09 17:13:53
【问题描述】:

我画了椭圆:

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

但我只需要一半椭圆,有没有办法剪掉另一半?

【问题讨论】:

    标签: iphone core-graphics draw ellipse clip


    【解决方案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
    猜你喜欢
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2017-04-07
    • 2011-09-25
    相关资源
    最近更新 更多