OC画图

1.获取当前的画板

CGContextRef context = UIGraphicsGetCurrentContext();

2.设置画笔的颜色

CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);

 CGContextSetRGBStrokeColor(context, 1, 0, 0, 1);

//设置画笔的宽度

    CGContextSetLineWidth(context, 20);

    

    //设置画笔的样式

    CGContextSetLineCap(context, kCGLineCapRound);

//把画笔移动到某一个点

    CGContextMoveToPoint(context,firstPoint.x, firstPoint.y);

//跟另外一个点之间形成一条线

    CGContextAddLineToPoint(context, nextPoint.x, nextPoint.y);

//把画板上刚才描的路径画出来

    CGContextStrokePath(context);

     

    //画圆  Ellipse椭圆

    //CGContextStrokeEllipseInRect(context, CGRectMake(100, 200, 200, 200));

    //画矩形

    //CGContextStrokeRect(context, CGRectMake(20, 220, 250, 250));

    

因为drawRect是系统的方法   系统不允许我们自己去调用这个方法所以只能调用

 [self setNeedsDisplay];

- (void)drawRect:(CGRect)rect

//这个方法提供给我们在一个视图显示之前 自己去绘制一些东西

    //不需要自己创建画板

简单画板编辑

1.在storyBoard中拖拽所需的控件 (一个imageVIew用来展示画板的背景颜色  一个View设置成透明让其充当画板(其大小和imageVIew的大小一样) 四个lab分别是R G B Width 四个UIslider  一个View 显示调试好的颜色  若干button (撤销 清空 橡皮上(画笔)背景图片 画笔样式 保存))

2.给UIslider绑定方法通过slider的value的变化改变颜色 并且让View的背景颜色显示为调试后的颜色

3.画笔大小UISlider方法中 让当前的宽度为slider的value值

4.button点击方法中点击不同的button实现撤销 (就是把线数组 颜色数组 画笔宽度数组 橡皮差数组 字体样式数组 分别移除其数组中的最后一个值)并且调用[drawView setNeedsDisplay];方法

5.清空就是把上面的咯咯数组删除

橡皮差 点击让橡皮差得状态改变 并改变橡皮差得标题

6.点击可改变背景图片

7.改变画笔状态

8.保存

 // 1,把背景图片和画的画合成一张图片

            // 缺点:橡皮擦会把背景图片擦掉

            UIGraphicsBeginImageContext(CGSizeMake(280, 280));

//            [bgImageView drawRect:CGRectMake(0, 0, 280, 280)];

//            [drawView drawRect:CGRectMake(0, 0, 280, 280)];

            CGContextRef context = UIGraphicsGetCurrentContext();

            [bgImageView.layer renderInContext:context];

            [drawView.layer renderInContext:context];

            UIImage *image =  UIGraphicsGetImageFromCurrentImageContext();

            

            // 把图片写入系统相册

            UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:),nil);

画板View中把相应的数组设置为你属性 设置当前的颜色的属性 设置当前画笔大小的属性 设置判断是不是橡皮差的属性

9.在init方法中初始化各个数组并设置初始的当前的画笔的大小和颜色

10.在awakeFromNib中初始化各个数组并设置初始的当前的画笔的大小和颜色

11在drawRect方法中

12.获取当前的画板

13.设置线条的样式

14.遍历大数组取出里面的小数组并且获取当前小数组的索引   根据此索引获取当前画笔的颜色 并把颜色设置给画笔  获取当前是否是橡皮差 如果是设置为橡皮差模式

 // 橡皮擦模式

            CGContextSetBlendMode(context, kCGBlendModeClear);

如果不是设置为普通模式

// 普通模式

            CGContextSetBlendMode(context, kCGBlendModeNormal);

取出画笔对应的宽度 设置线条的宽度  

把画笔移到某个点 在小数组里面取出第一个元素 并设置为画笔的开始点

遍历小数组中剩下的元素  设置到下一个点的形成的一条线的点

15.把路径画出来

16.在touchesBegan方法中初始化小数组并把开始点放到数组中 把小数组放到大数组中  把当前的颜色放到颜色数组中 把当前的画笔大小放到画笔数组中 把是否是橡皮差放到橡皮差数组中

17.在move方法中把点放到小数组中

调用[self setNeedsDisplay];