如何将透明渐变遮罩添加到上下文

我用石英2d绘制一个饼图。

我使用图层来绘制底部饼图的reflection。

我想添加一个透明的alpha渐变到reflection,使其越来越透明,直到它不可见。

有人有一个想法?

@EDIT:更多细节我的饼图在CGLayerRef中。

我首先将这个图层绘制到CGContextRef。 然后我做了

CGContextTranslateCTM(context, 0, rect.size.height); CGContextScaleCTM(context, 1.0, -1.0); 

要颠倒。

然后我画我的图层新的时间

提前致谢,

卢瓦克

您需要使用图像蒙版。 您可以通过在位图上下文中绘制渐变来制作蒙版:

 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); CGContextRef gc = CGBitmapContextCreate(NULL, rect.size.width, rect.size.height, 8, rect.size.width, colorSpace, kCGImageAlphaNone); CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)[NSArray arrayWithObjects:(__bridge id)[UIColor whiteColor].CGColor, (__bridge id)[UIColor blackColor].CGColor, nil], NULL); CGColorSpaceRelease(colorSpace); CGContextDrawLinearGradient(gc, gradient, CGPointMake(0, 0), CGPointMake(0, rect.size.height), 0); CGGradientRelease(gradient); CGImageRef mask = CGBitmapContextCreateImage(gc); CGContextRelease(gc); 

(如果你不使用ARC,删除__bridge 。)

然后,您可以在绘制图像之前使用蒙版:

 CGContextTranslateCTM(context, 0, rect.size.height); CGContextScaleCTM(context, 1.0, -1.0); CGContextClipToMask(context, rect, mask); 

完成后别忘了放开面具。