iOS图像处理(1)绘制简单的几何图形
2016-08-01 22:32
381 查看
通过CoreGraphic绘制图像一般有以下几个步骤:
1:获取图形上下文对象
绘制图像首先需要取得图形上下文对象(CGContextRef),系统中维护一个CGContextRef的栈,在UI控件的drawRect方法调用前,系统会为当前绘图环境创建一个图形上下文对象并且置于CGContextRef栈顶,通过UIGraphicsGetCurrentContext()可以取得这个图像上下文对象。
2:设置绘画的属性,可以配置线条颜色,填充颜色,线条宽度,阴影,线段端点形状,点线模式,线条连接点风格,叠加模式等属性
3:通过API绘制图像
运行结果
![](http://images.cnitblog.com/blog/643100/201410/191439036386104.png)
上面的代码中设置点线模式时用到了CGContextSetLineDash这个函数,函数有4个参数,第一个参数表示图像上下文对象,第二个参数配合第三个参数用来指定第一个点线的长度,第三个参数是一个浮点数组,最后一个参数是第三个参数中数组的长度。
我们传的数组是{5,5}表示点线长5,间隔5,如果数组为{2,3,4}表示点线长2,间隔3,点线长4,间隔2,点线长3,间隔4这样依次下去。
数组第一个数字减去函数的第2个参数表示第一个点线的长度,比如上例中数组第一个数字是5,参数第2个数字是1,所以第一个点线长为4。
1:获取图形上下文对象
绘制图像首先需要取得图形上下文对象(CGContextRef),系统中维护一个CGContextRef的栈,在UI控件的drawRect方法调用前,系统会为当前绘图环境创建一个图形上下文对象并且置于CGContextRef栈顶,通过UIGraphicsGetCurrentContext()可以取得这个图像上下文对象。
2:设置绘画的属性,可以配置线条颜色,填充颜色,线条宽度,阴影,线段端点形状,点线模式,线条连接点风格,叠加模式等属性
3:通过API绘制图像
- (void)drawRect:(CGRect)rect { //获取图像上下文对象 CGContextRef context = UIGraphicsGetCurrentContext(); //设置线段宽度 CGContextSetLineWidth(context, 2); //通过RGB模式设置线条颜色,最后一个参数代表透明度 CGContextSetRGBStrokeColor(context, 250/255.0, 250/255.0, 250/255.0, 1); //设置填充颜色 CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor); //设置阴影,第二个参数是阴影在x轴以及y轴的偏移量,第三个参数设定阴影的模糊程度,0表示不模糊,阴影默认颜色为黑色,透明度0.3 CGContextSetShadow(context, CGSizeMake(3, 3), 5); //设置线段端点形状,第二个参数是个枚举类型,包含3个选项 CGContextSetLineCap(context, kCGLineCapRound); //设置线条连接风格 CGContextSetLineJoin(context, kCGLineJoinRound); //绘制线段,points是点数组,两个点确定一条线,下面的数组有8个点,可以确定4条线段 const CGPoint points[] = {CGPointMake(10, 30),CGPointMake(100, 30),CGPointMake(100, 30),CGPointMake(100, 100),CGPointMake(100, 100),CGPointMake(10, 100),CGPointMake(10, 100),CGPointMake(10, 30)}; //绘制 CGContextStrokeLineSegments(context, points, 8); //填充矩形 CGContextFillRect(context, CGRectMake(120, 30, 80, 50)); //绘制矩形 CGContextStrokeRect(context, CGRectMake(120, 100, 80, 50)); //绘制椭圆 CGContextStrokeEllipseInRect(context, CGRectMake(220, 30, 80, 50)); //绘制虚线 //绘制虚线需要设置点线模式 CGFloat pattern[] = {5,5}; CGContextSetLineDash(context, 1, pattern, 2); const CGPoint points2[] = {CGPointMake(100, 190),CGPointMake(220, 190)}; CGContextStrokeLineSegments(context, points2, 2); }
运行结果
![](http://images.cnitblog.com/blog/643100/201410/191439036386104.png)
上面的代码中设置点线模式时用到了CGContextSetLineDash这个函数,函数有4个参数,第一个参数表示图像上下文对象,第二个参数配合第三个参数用来指定第一个点线的长度,第三个参数是一个浮点数组,最后一个参数是第三个参数中数组的长度。
我们传的数组是{5,5}表示点线长5,间隔5,如果数组为{2,3,4}表示点线长2,间隔3,点线长4,间隔2,点线长3,间隔4这样依次下去。
数组第一个数字减去函数的第2个参数表示第一个点线的长度,比如上例中数组第一个数字是5,参数第2个数字是1,所以第一个点线长为4。
相关文章推荐
- IOS图像处理(1)绘制简单的几何图形
- IOS图像处理(3)绘制路径
- iOS图像处理(2)绘制文本
- IOS图像处理(7)绘制位图
- iOS:quartz2D绘图(处理图像,绘制图像并添加水印)
- iOS图像处理(7)绘制位图
- iOS图像处理之绘制直线
- 【python图像处理】几何图形的绘制与文字的绘制(ImageDraw类详解)
- [绘画]iOS开发图像处理 - 绘制图片上下颠倒
- iOS开发图像处理--绘制图片上下颠倒
- IOS图像处理(2)绘制文本
- iOS图像处理(3)绘制路径
- OpenCV学习笔记(8)VS2008 MFC下使用OpenCV2.0进行简单图像处理
- python 简单图像处理(1) 反色
- 处理2D图像和纹理——将场景绘制到纹理
- python 简单图像处理(3) 平移
- python 简单图像处理(2) 镜像
- GDI+入门(4、GDI+入门 简单的图像处理)
- python 简单图像处理(7) 计算直方图
- 处理2D图像和纹理——使用SpriteBatch类显示2D图像:加载和绘制图像