【问题标题】:Circular gradient圆形渐变
【发布时间】:2014-03-15 21:15:11
【问题描述】:

我已经搜索和搜索,但我似乎找不到可以在下面的屏幕截图中给我效果的代码:

http://i.stack.imgur.com/MPAiA.png

我已经设法绘制了圆圈并获得了一个简单的从上到下的渐变,但我无法理解如何获得以下内容,非常感谢所有帮助。

这是一个简单的从上到下的渐变:

CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2);
CGColorSpaceRelease(baseSpace), baseSpace = NULL;

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSaveGState(context);
CGContextAddEllipseInRect(context, rect);
CGContextClip(context);

CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient), gradient = NULL;

CGContextRestoreGState(context);

CGContextAddEllipseInRect(context, rect);
CGContextDrawPath(context, kCGPathStroke);

【问题讨论】:

    标签: ios objective-c gradient quartz-2d


    【解决方案1】:

    所以你想要一个径向渐变。但是您正在绘制线性渐变。这很愚蠢。如果您想要径向渐变,请绘制径向渐变!

    https://developer.apple.com/library/ios/documentation/graphicsimaging/reference/CGContext/Reference/reference.html#//apple_ref/c/func/CGContextDrawRadialGradient

    另一种可能性(相当简单)是使用 CIFilter 绘制径向渐变:

    https://developer.apple.com/library/mac/documentation/graphicsimaging/reference/CoreImageFilterReference/Reference/reference.html#//apple_ref/doc/filter/ci/CIRadialGradient

    【讨论】:

    • 感谢您的指导,但是沿着 Radialgradient 路线,我可以成功获得 drawrect 以在我的视图中实现径向渐变,但随后失去了我绘制的圆圈。我无法弄清楚它为什么这样做
    猜你喜欢
    • 1970-01-01
    • 2011-01-29
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多