[英]CGGradient in an CGPath
是否可以在iPhone上的路径中绘制渐变?
我正在寻找mac os x方法的替代品
-(void)drawInBezierPath:(NSBezierPath *)path relativeCenterPosition:(NSPoint)relativeCenterPosition of NSGradient.
我认为这样的事情会起作用:
CGContextSaveGState(c);
CGContextAddPath(c, path);
CGContextClip(c)
// make a gradient
CGColorRef colors[] = { topColor, bottomColor };
CFArrayRef colorsArr = CFArrayCreate(NULL, (const void**)colors, sizeof(colors) / sizeof(CGColorRef), &kCFTypeArrayCallBacks);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, colorsArr, NULL);
CFRelease(colorSpace);
CFRelease(colorsArr);
// Draw a linear gradient from top to bottom
CGPoint start = ...
CGPoint end = ...
CGContextDrawLinearGradient(c, gradient, start, end, 0);
CFRelease(gradient);
CGContextRestoreGState(c);
是的,如果我理解你的问题,我想是的。 这有点牵扯,但这是一个很好的例子:
http://cocoawithlove.com/2008/09/drawing-gloss-gradients-in-coregraphics.html
这是通过Cocoa而不是Cocoa Touch完成的,但它可以转换为NSColor的所有内容。 你必须使用UIColor。 基本上,您必须创建一个渐变函数,然后使用:
CGShadingCreateAxial()
确定渐变的值。
或者你想要一个带渐变的线?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.