簡體   English   中英

CGPath中的CGGradient

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM