是否可以在iPhone上的路徑中繪製漸變?CGPath中的CGGradient
我正在尋找一個替代Mac OS X的方法
-(void)drawInBezierPath:(NSBezierPath *)path relativeCenterPosition:(NSPoint)relativeCenterPosition of NSGradient.
是否可以在iPhone上的路徑中繪製漸變?CGPath中的CGGradient
我正在尋找一個替代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
這是用可可和可可沒有做觸摸,但它的一切BU NSColor轉換。您必須改用UIColor。基本上,你必須創建一個漸變功能,然後使用:
CGShadingCreateAxial()
確定您的漸變的值。
或者你想要有一個梯度線?
THX很多託德! 我已經有相同的代碼,但我忘了CGContextAddPath後的CGContextClip .... – catlan 2010-04-03 17:06:19
我試圖理解此代碼,但「顏色」被聲明兩次不同類型。我不確定在隨後的調用中使用哪一個。 – progrmr 2010-04-17 01:01:34
progrmr,它的錯字,應該是: CGColorRef colorRef [] = {topColor,bottomColor}; (NULL,(const void **)colorRef,sizeof(colorRef)/ sizeof(CGColorRef),&kCFTypeArrayCallBacks); – digdog 2010-10-08 21:27:22