IOS之Quartz2D绘图4.径向渐变和线性渐变
来源:互联网 发布:摄影作品 知乎 编辑:程序博客网 时间:2024/05/16 05:38
Quartz2D渐变
绘制渐变的一般步骤
创建颜色空间
CGColorSpaceRefcolorSpaceRef=CGColorSpaceCreateDeviceRGB();
渐变的色谱
CGFloatcolors[8]={1.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0};
渐变的开始到结束比例0--1
CGFloat locations[2]={0.0,1.0};
创建渐变
CGGradientRef gradient=CGGradientCreateWithColorComponents
线性渐变演示
-(void) drawLineGradient{
CGContextRef context=UIGraphicsGetCurrentContext();
//创建颜色空间
CGColorSpaceRef colorSpaceRef=CGColorSpaceCreateDeviceRGB();
//渐变的色谱
CGFloat colors[8]={1.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0};
//渐变的开始到结束比例0--1
CGFloat locations[2]={0.0,1.0};
//创建渐变
CGGradientRef gradient=CGGradientCreateWithColorComponents(colorSpaceRef, colors, locations, 2);
CGRect rct=CGRectMake(0,40,320,100);
CGContextClipToRect(context, rct);
CGContextDrawLinearGradient(context, gradient,CGPointMake(0,0),CGPointMake(320,0),kCGGradientDrawsAfterEndLocation);
CGColorSpaceRelease(colorSpaceRef);
CGGradientRelease(gradient);
}
上下文的裁切
在绘图中,可以选择上下文的一部分进行裁切。
1. 创建要裁切的Rect
CGRect rct=CGRectMake(0,40,320,100);
2. 开始裁切
CGContextClipToRect(context, rct);
镜像渐变演示
绘制镜像渐变需要的关键参数
//径像渐变的起点
CGPoint startPoint=CGPointMake(160,200);
//径像渐变的起点半径
CGFloat startRadius=10;
//终点
CGPoint endPoint=CGPointMake(160,120);
//终点半径
CGFloat endRadius=100;
这些参数其实是构成两个圆,为了更好的理解径向渐变,我把这两个圆也绘在画布上
-(void)drawRadiaGradient{
CGContextRefcontext=UIGraphicsGetCurrentContext();
//创建颜色空间
CGColorSpaceRef colorSpaceRef=CGColorSpaceCreateDeviceRGB();
//渐变的色谱
CGFloat colors[8]={1.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0};
//渐变的开始到结束比例0--1
CGFloat locations[2]={0.0,1.0};
//创建渐变
CGGradientRef gradient=CGGradientCreateWithColorComponents(colorSpaceRef, colors, locations, 2);
//径像渐变的起点
CGPoint startPoint=CGPointMake(160,200);
//径像渐变的起点半径
CGFloat startRadius=10;
//终点
CGPoint endPoint=CGPointMake(160,120);
//终点半径
CGFloat endRadius=100;
//绘制径像渐变
CGContextDrawRadialGradient(context, gradient, startPoint, startRadius,endPoint, endRadius, kCGGradientDrawsAfterEndLocation);
//辅助理解径像渐变代码
[[UIColoryellowColor]set];
CGContextAddEllipseInRect(context,CGRectMake(startPoint.x-startRadius, startPoint.y-startRadius,startRadius*2, startRadius*2));
CGContextAddEllipseInRect(context,CGRectMake(endPoint.x-endRadius, endPoint.y-endRadius,endRadius*2, endRadius*2));
CGContextDrawPath(context,kCGPathStroke);
CGColorSpaceRelease(colorSpaceRef);
CGGradientRelease(gradient);
}
完整代码下载
- IOS之Quartz2D绘图4.径向渐变和线性渐变
- css3渐变、线性渐变和径向渐变
- Quartz 2D之线性渐变和径向渐变
- 渐变:线性渐变、径向渐变
- css3 线性渐变和径向渐变样式
- css3 线性渐变和径向渐变
- CSS3的线性渐变 和 径向渐变。
- CSS3之渐变(线性渐变,径向渐变)
- IOS之Quartz2D绘图5.绘制UITableViewCell渐变背景
- CSS3-颜色渐变--线性渐变+径向渐变
- 详解CSS3渐变(线性和径向)
- CSS3重复渐变(线性和径向渐变)
- CSS3 Gradient 分为线性渐变(linear)和径向渐变(radial)
- CSS3 Gradient 分为线性渐变(linear)和径向渐变(radial)
- CSS3 Gradient 线性渐变 径向渐变
- CSS3 Gradient 线性渐变/径向渐变
- CSS3线性渐变与径向渐变
- CSS3背景渐变属性 linear-gradient(线性渐变)和radial-gradient(径向渐变)。
- Longest Palindromic Substring
- logcat日志等级
- Intent数据传递(转)
- HDU 3183 A Magic Lamp【RMQ】
- C# 事件和Unity3D
- IOS之Quartz2D绘图4.径向渐变和线性渐变
- 关于计算机视觉的各种库儿们
- Python的__name__变量
- Flash原生文字描边
- 二进制中1的个数
- 菜单脚本
- UML中各图形或图标含义(转载)
- Class.forName()的作用与使用总结
- C语言中的数组初始化问题