到目前为止,我已经看过使用CGContextDrawLinearGradient()和CGContextDrawRadialGradient(),然而,对于前者,我无法弄清楚如何使渐变看起来像一个球体,而后者,我无法弄清楚如何制作渐变成球体的形状,因为每当我尝试时,它就会变成完整圆柱体的形状,而不仅仅是一个球体.
我用来当前绘制2D圆的代码如下所示.我想使用渐变或任何其他方法,仅使用Core Graphics和/或Quartz 2D以使其看起来像球体的方式填充圆.
绘制圆圈的当前代码:
CGContextRef ctx = UIGraphicsGetCurrentContext(); float x = 20.0; float y = 20.0; float radius = 12.5; CGContextFillEllipseInRect(ctx,CGRectMake(x,y,radius,radius);
解决方法
我相信这是你正在寻找的效果:
这是使用径向渐变创建的.渐变以半径0开始,以圆的大小半径结束.开始的中心点必须在末端创建的圆内,否则您将获得圆锥形状.以下是我用来制作此图片的代码(在使用之前需要将几个部分翻译成iOS):
CGContextRef ctxt = [[NSGraphicsContext currentContext] graphicsPort]; CGGradientRef gradient; CGColorSpaceRef colorSpace; CGFloat locations[] = {0.0,1.0}; CGFloat components[] = { 0.5,1.0,0.25,0.5,1.0 }; colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); gradient = CGGradientCreateWithColorComponents(colorSpace,components,locations,sizeof(locations)/sizeof(CGFloat)); CGPoint start = {70.0,130.0},end = {100.0,100.0}; CGFloat startRadius = 0.0,endRadius = 90.0; CGContextDrawRadialGradient(ctxt,gradient,start,startRadius,end,endRadius,0); CGGradientRelease(gradient); CGColorSpaceRelease(colorSpace);