其实绘图过程也就点成线的过程,在ios绘图需要使用到的CGContextRef和CGMutablePathRef,下面简单说一些绘制的过程。
1、首先获取上下文内容也就是画在那个画布上
CGContextRef context = UIGraphicsGetCurrentContext();
2、创建路径
CGMutablePathRef path = CGPathCreateMutable();
3、添加起始点
CGPathMoveToPoint(path, &CGAffineTransformIdentity, x,y);
4、添加路径上的点绘制直线(从起始位置开始)
CGPathAddLineToPoint(path, &CGAffineTransformIdentity,x,y);
5、把路径添加到上下文(画布)中
CGContextAddPath(context, path);
6、设置路径的样式笔触颜色
CGContextSetRGBStrokeColor(context, model.R, model.G, model.B,1);
设置线条宽度
CGContextSetLineWidth(context, model.pathWidth);
把路径在画布上绘制出来
CGContextStrokePath(context);
这里一个基本的绘制过程就完成了,但是要是先在屏幕上捕捉触摸点然后挥之路径还需要实现touchesMoved: withEvent:方法,获取触摸的每个点并存储触摸关键点,然后在这里调用setNeedsDisplay方法,则会自动调用drawRect方法进行重绘,drawRect这里将存储的关键点传入即可完成手动绘制想要的图型。
最后再补充一点就是保持当前绘制的内容为图片存到相册
// currentView 当前的view 创建一个基于绘图的图形上下文并指定大小为当前视图的bounds
UIGraphicsBeginImageContext(self.imageView.bounds.size);
// renderInContext呈现接受者及其子范围到指定的上下文
[self.imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
// 返回一个基于当前图形上下文的图片
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
// 移除栈顶的基于当前位图的图形上下文
UIGraphicsEndImageContext();
// 然后将该图片保存到图片图
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);