ios 渐进色绘制 CGGradient(一)
2013-05-16 23:23
155 查看
开始要做实验室的项目了,所以得好好学下ios的东西,今天重新看了渐进色的绘制。
ios中绘制渐进色有两种方案,一种是用CGCradient对象,另一种是CGShading,对于后面这种,可以通过自己写回调函数来设定渐进色的变化规则,因此更加具有主观能动性,当然,用CGGradient则是系统自己会帮你算,相对简单些,这里只介绍CGGradient,因为不会用CGCradient……
本文介绍轴向渐进色绘制
绘图的步骤如下:
1、创建一个CGGradient对象,这个对象里存放的是关于绘制渐进色的一些信息,包括颜色以及位置等等,创建一个CGGradient对象需要的东西有:
一个颜色空间,通过 CGColorSpaceRef myColorspace
= CGColorSpaceCreateDeviceRGB(); 得到
颜色数组,位置数组
这两个数组的元素应该对应,不过需要的注意的是,一个颜色其实是有四个浮点数组成的,分别表示rgb值和透明度,范围均为0-1
所以颜色数组可以这么定义:
CGFloat components[] = {
1,1,1,1,
0,0,0,1,
1,1,1,1};
对应的位置数组可以这么定义
CGFloat locations[] = {0.0,0.5,1.0};
关于位置数组,它表示的是一个线段上的百分比,这条线段就是我们画渐进色的轴(由两个端点组成)
上面这个例子的意思是,在起点处的颜色值为(1,1,1,1)(白色),中点处的位置为(0,0,0,1)(黑色),终点的颜色为(1,1,1,1)(白色),所以整个渐进色的过程就是由白变到黑再变回白色,当然你可以只有两种颜色,或者更多颜色,只要颜色数和位置数相等就好了,可以随便你这么画……按照上面的画法结果如下:
附上代码:
ios中绘制渐进色有两种方案,一种是用CGCradient对象,另一种是CGShading,对于后面这种,可以通过自己写回调函数来设定渐进色的变化规则,因此更加具有主观能动性,当然,用CGGradient则是系统自己会帮你算,相对简单些,这里只介绍CGGradient,因为不会用CGCradient……
本文介绍轴向渐进色绘制
绘图的步骤如下:
1、创建一个CGGradient对象,这个对象里存放的是关于绘制渐进色的一些信息,包括颜色以及位置等等,创建一个CGGradient对象需要的东西有:
一个颜色空间,通过 CGColorSpaceRef myColorspace
= CGColorSpaceCreateDeviceRGB(); 得到
颜色数组,位置数组
这两个数组的元素应该对应,不过需要的注意的是,一个颜色其实是有四个浮点数组成的,分别表示rgb值和透明度,范围均为0-1
所以颜色数组可以这么定义:
CGFloat components[] = {
1,1,1,1,
0,0,0,1,
1,1,1,1};
对应的位置数组可以这么定义
CGFloat locations[] = {0.0,0.5,1.0};
关于位置数组,它表示的是一个线段上的百分比,这条线段就是我们画渐进色的轴(由两个端点组成)
上面这个例子的意思是,在起点处的颜色值为(1,1,1,1)(白色),中点处的位置为(0,0,0,1)(黑色),终点的颜色为(1,1,1,1)(白色),所以整个渐进色的过程就是由白变到黑再变回白色,当然你可以只有两种颜色,或者更多颜色,只要颜色数和位置数相等就好了,可以随便你这么画……按照上面的画法结果如下:
附上代码:
CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB(); //得到颜色空间 CGGradientRef myGradient; int location_num = 3; CGFloat components[] = {1,1,1,1, 0,0,0,1, 1,1,1,1}; CGFloat locations[] = {0.0,0.5,1.0}; myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, location_num); CGContextDrawLinearGradient(context, myGradient, CGPointMake(0, 0),CGPointMake(100, 100), 0); //两个点,前一个表示起点,第二个表示终点
相关文章推荐
- ios绘图系列五:绘制渐变CGContextDrawLinearGradient, CGContextDrawRadialGradient, CAGradientLayer
- ios绘图系列五:绘制渐变CGContextDrawLinearGradient, CGContextDrawRadialGradient, CAGradientLayer
- [iOS] 绘制虚线CGContextSetLineDash的使用
- ios 绘制虚线 CGContextSetLineDash函数的参数
- iOS Quartz2D 渐变图形 CGGradient CGShading
- iOS使用CG绘制相应形状的view
- ios 绘制虚线 CGContextSetLineDash的使用
- iOS绘图系列四:绘制文字和图像CGContextDrawImage,drawInRect:,drawAtPoint:, UIGraphicsBeginImageContext
- iOS绘图系列四:绘制文字和图像CGContextDrawImage,drawInRect:,drawAtPoint:, UIGraphicsBeginImageContext
- ios 绘制虚线 CGContextSetLineDash的使用
- ios 绘制虚线 CGContextSetLineDash的使用
- IOS开发之—绘图 CGContext
- iOS绘图教程 各种绘制原理
- IOS开发中的CGFloat、CGPoint、CGSize和CGRect
- iOS 使用 Core Plot 绘制统计图表入门
- IOS绘图详解-iOS下如何绘制图片
- IOS开发(78)之绘制文本
- ios 绘图,绘制坐标系,画坐标系
- ios开发日记10 - 使用CAShapLayer绘制扇形
- ios-OPENGL之绘制天空盒