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

}

完整代码下载

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大螺丝拆不下来怎么办 一字螺丝扭不动怎么办 带帽的螺丝拧花怎么办 螺丝拧不出来了怎么办 小六角螺丝滑丝怎么办 螺丝拧不下来了怎么办 固定水龙头的螺母扭不动怎么办 小螺丝帽拧花了怎么办 6角螺丝帽拧圆了怎么办 眼镜螺丝滑扣了怎么办 眼镜的螺丝掉了怎么办 螺丝松了怎么办小窍门 螺丝松了怎么办 小窍门 小螺丝完全滑牙怎么办 车座椅螺丝滑丝怎么办 塑料柱突然滑牙怎么办 螺丝底座滑丝了怎么办 螺丝拧木头不紧怎么办 六方螺母滑了怎么办 螺母滑丝怎么拧下来怎么办 安装车牌螺丝眼滑丝了怎么办 注塑机孔螺丝洞滑丝了怎么办 空调内机螺丝洞滑丝了怎么办 小螺丝钉滑牙了怎么办? 螺丝滑扣了怎么办 松 苹果8p螺丝滑了怎么办 座椅孔螺丝滑了怎么办 车轮胎螺丝突扣了怎么办 孔里面滑丝了怎么办 六口螺丝滑扣了怎么办 手机螺丝滑扣了怎么办 超极本没有网线接口怎么办 机动车禁令标识位置放置错误怎么办 六角头冲得不标准怎么办 滚丝杆烫手怎么办怎样能不烫手 带滚花的杆子里面脏怎么办 田螺和玉米吃了怎么办 lv包包螺丝掉了怎么办 螺狮那一段吃了怎么办 吃了不熟的田螺怎么办 包上的螺丝掉了怎么办