【问题标题】:CGGradient in an CGPathCGPath 中的 CGGradient
【发布时间】:2011-02-03 12:47:33
【问题描述】:

是否可以在 iPhone 上的路径中绘制渐变?

我正在寻找mac os x方法的替代品

-(void)drawInBezierPath:(NSBezierPath *)path relativeCenterPosition:(NSPoint)relativeCenterPosition of NSGradient.

【问题讨论】:

    标签: iphone cocoa cocoa-touch core-graphics


    【解决方案1】:

    是的,如果我理解您的问题,我想是的。这有点涉及,但这是一个很好的例子:

    http://cocoawithlove.com/2008/09/drawing-gloss-gradients-in-coregraphics.html

    这是使用 Cocoa 而不是 Cocoa Touch 完成的,但它可以转换 NSColor 以外的所有内容。您必须改用 UIColor 。基本上,你必须创建一个渐变函数,然后使用:

    CGShadingCreateAxial()
    

    确定渐变的值。

    或者你想要一条带渐变的线?

    【讨论】:

      【解决方案2】:

      我认为这样的事情会起作用:

      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);
      

      【讨论】:

      • 非常感谢托德!我已经有相同的代码,但是在 CGContextAddPath .... 之后我忘记了 CGContextClip
      • 我试图理解这段代码,但“颜色”被声明了两次不同的类型。我不确定后续调用中使用的是哪一个。
      • progrmr,打错了,应该是:CGColorRef colorRef[] = { topColor, bottomColor }; CFArrayRef 颜色 = CFArrayCreate(NULL, (const void**)colorRef, sizeof(colorRef) / sizeof(CGColorRef), &kCFTypeArrayCallBacks);
      • 这段代码还有什么遗漏吗?我无法让它为我工作。
      • 附录:我将我的非工作代码发布到stackoverflow.com/questions/4799882/…
      猜你喜欢
      • 2011-06-15
      • 2013-10-22
      • 2017-07-08
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多