我使用石英2d绘制饼图.
我使用图层在底部绘制饼图的反射.
我想在反射中添加一个透明的alpha渐变,使其变得越来越透明,直到它变得不可见.
有人有想法吗?
@EDIT:更多细节我的饼图在CGLayerRef中.
我首先将此图层绘制到CGContextRef.然后我做了
CGContextTranslateCTM(context, 0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
Run Code Online (Sandbox Code Playgroud)
颠倒过来.
然后我画了一个新的时间
提前致谢,
卢瓦克
rob*_*off 14
您需要使用图像蒙版.您可以通过将渐变绘制到位图上下文中来制作蒙版:
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);
Run Code Online (Sandbox Code Playgroud)
(__bridge如果您不使用ARC,请删除.)
然后你可以在绘制图像之前使用蒙版:
CGContextTranslateCTM(context, 0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextClipToMask(context, rect, mask);
Run Code Online (Sandbox Code Playgroud)
完成后不要忘记释放面具.
| 归档时间: |
|
| 查看次数: |
4095 次 |
| 最近记录: |