quartzD可以用来绘制渐变图形,即图形向外或向内发散,会变得越来越模糊。

渐变分为线性渐变和径向渐变,所谓线性渐变,就是图形以线的方式发散,发散后一般呈现出矩形的样子;而径向渐变,就是以半径的大小往外或往内发散,发散后呈现出圆形的样子。

渐变系数:0.0~1.0

渐变模式:可以进行与操作

kCGGradientDrawsBeforeStartLocation = (1 << 0),  //向内渐变

kCGGradientDrawsAfterEndLocation = (1 << 1)       //向外渐变

具体举例如下:

1.自定义一个视图类DemoView,并将控制器视图关联该自定义类,在这个自定义类中重写- (void)drawRect:(CGRect)rect方法,绘制渐变图形的调用方法都写在里面。

   

//绘制渐变图形的调用方法

- (void)drawRect:(CGRect)rect
{
//1.获取绘图的上下文
CGContextRef context = UIGraphicsGetCurrentContext(); //线性渐变
[self drawLinarGradient:context]; //径向渐变
[self drawRadialGradient:context];
}

2.绘制渐变图形:线性渐变和径向渐变

绘制线性渐变图形:

#pragma mark -画线性渐变

-(void)drawLinarGradient:(CGContextRef) context
{ //2.创建一个渐变
//2.1 创建一个颜色空间
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); //2.2 设置颜色
//设置开始颜色
UIColor *startColor = [UIColor redColor];
const CGFloat *startColorComponents = CGColorGetComponents([startColor CGColor]); //设置中间颜色
UIColor *midColor = [UIColor greenColor];
const CGFloat *midColorComponents = CGColorGetComponents([midColor CGColor]); //设置结束颜色
UIColor *endColor = [UIColor blueColor];
const CGFloat *endColorComponents = CGColorGetComponents([endColor CGColor]);
//颜色分量的强度值的数组
CGFloat components[] = {startColorComponents[],startColorComponents[],
startColorComponents[],startColorComponents[], midColorComponents[],midColorComponents[],
midColorComponents[],midColorComponents[], endColorComponents[],endColorComponents[],
endColorComponents[],endColorComponents[]
};
//渐变系数(程度)
CGFloat locations[] = {0.0,0.5,1.0}; //创建渐变(参数:颜色空间、颜色分量强度值数组、渐变系数数组、设置的渐变系数个数)
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, ); //3.在上下文中画渐变(参数:上下文、渐变、开始点、结束点、渐变模式,默认为0)
CGContextDrawLinearGradient(context, gradient, CGPointMake(, ), CGPointMake(, ), ); //渐变模式:
//kCGGradientDrawsAfterEndLocation //向内发散
//kCGGradientDrawsBeforeStartLocation //向外发散 //4.对creat创建的对象必须清理(避免内存泄露)
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
}

绘制的线性渐变图形截图为:

绘制径向渐变图形:

#pragma mark -画径向渐变

-(void)drawRadialGradient:(CGContextRef) context
{ //2.创建一个渐变
//2.1 创建一个颜色空间
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); //2.2 设置开始颜色和结束颜色
UIColor *startColor = [UIColor redColor];
const CGFloat *startColorComponents = CGColorGetComponents([startColor CGColor]); UIColor *endColor = [UIColor whiteColor];
const CGFloat *endColorComponents = CGColorGetComponents([endColor CGColor]);

//颜色分量的强度值数组
CGFloat components[] = {startColorComponents[],startColorComponents[],
startColorComponents[],startColorComponents[],
endColorComponents[],endColorComponents[],
endColorComponents[],endColorComponents[]
}; //渐变系数数组
CGFloat locations[] = {0.0,1.0};

//创建渐变对象(参数:颜色空间、颜色分量的强度值数组、渐变系数数组、设置的渐变系数个数)
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, ); //3.画渐变(参数:上下文、渐变对象、起点、径向半径、终点、径向半径、渐变模式)
CGContextDrawRadialGradient(context, gradient, CGPointMake(, ), , CGPointMake(, ), , kCGGradientDrawsBeforeStartLocation);
    //渐变模式:
//kCGGradientDrawsAfterEndLocation //向外发散
//kCGGradientDrawsBeforeStartLocation //向里发散
    //4.清理
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
}

绘制的径向渐变图形截图为:

最新文章

  1. 记录在windows7上安装MongoDB
  2. TestLink学习八:TestLink1.9.13与Mantis1.2.19集成
  3. phaser运用中,dota战术板
  4. centos nginx install openssl
  5. Oracle临时表on commit preserver rows和on commit delete rows区别
  6. 杭电 2029 Palindromes _easy version
  7. SharePoint 入门书籍推荐 转载来源http://www.cnblogs.com/jianyus/p/3513238.html
  8. SpannableString 给TextView添加不同的显示样式
  9. LeetCode(65)-Power of Four
  10. [Swift]LeetCode713. 乘积小于K的子数组 | Subarray Product Less Than K
  11. no plugin found for prefix &#39;tomcat 7&#39; in the current project
  12. Codeforces 1045G AI robots [CDQ分治]
  13. PTA之多项式求值
  14. HashMap相关总结
  15. Struts2重新学习2之struts2和struts1的区别
  16. 传统三层架构与DDD分层架构
  17. MSSQL 详解SQL Server连接(内连接、外连接、交叉连接)
  18. REST理解
  19. 【NLP汉语自然语言处理与实践】分词_笔记
  20. yii2.0里自己写的源码上传图片

热门文章

  1. javaScript存储
  2. Djangp2.x版本报错找不到模版目录下的文件
  3. SPOJ - PHRASES K - Relevant Phrases of Annihilation
  4. 戴尔笔记本Inspiron 7560(灵越) 加装固态硬盘从选购固态硬盘到系统迁移到设置SSD为第一启动(受不了了,网上的教程就没有完整的)
  5. 203. Remove Linked List Elements【Easy】【未排序链表删除其中的给定值】
  6. Struts2自定义转换器输入生日日期输出年、月、日、年龄
  7. Python开发基础-Day16import模块导入和包的调用
  8. (hdu1007)Quoit Design,求最近点对
  9. Codeforces 550 D. Regular Bridge
  10. python基础之序列化 time random os